You can't call it a need, since Switzerland dropped ß at the beginning of the 20th century and has, apparently, not yet collapsed.
But ß does have a function. In intervocalic position, there is a triple opposition:
Here, ß and ss both stand for voiceless [s], with ß signalling a preceding long vowel and ss a short vowel.
Both ß and s signal a long vowel, with ß standing for voiceless [s] and s for voiced [z].
A double consonant, such as ss, marking a short vowel is characteristic for the German spelling system.
Marking the distinction between [s] and [z] is unnecessary in other contexts: Initially, there is only <s>, pronounced [z]; and in final position, there is only [s], written as <s>, <ss> or <ß>, depending on what happens when a vowel is added: Gras - Gräser long vowel + [z], Fuß - Füße long vowel + [s], Kuss - Küsse short vowel + [s].
Note that the sound [z] cannot be represented by <z>, since the latter is used for [ts] initially or after a long vowel or diphthong: Notiz(en) [noˈtiːts], Kreuz(e) [kʁɔɪ̯ts]. After a short vowel, <tz> is used instead of <zz>: Witz.
Note that this triple opposition in intervocalic position has not been affected by the 1996 spelling reform. Rather, the reform removed ß after short vowels at the end of a syllable (where all consonants are devoiced and [z] cannot occur).
Fuß [fuːs] remained Fuß
Kuß [kʊs] became Kuss
The effect is that now, at the end of a syllable, ß signifies a long vowel. This can be used to indicate pronunciation differences.
Note that the offical post-reform spelling is tschüs. But my feeling is that people use the spelling with ß in order to indicate a long vowel.
In the old rules, ß in final position helped to make compounds more readable.
Schlußsatz instead of Schlusssatz
One caveat: Saying that ß has the function of marking a preceding vowel as long does not imply that German strictly requires vowel length to be marked. For instance:
nach [a:] - Dach [a]
Nische [i:] - Frische [ɪ]