I don't see that it necessaily does. Are all the parameter names
unique in the standard library?
No, but more relevantly none (afaik) of the parameter names in the
standard library are also names of functions in the standard library;
similarly, none of the parameter names are also names of static
variables. (Of course, a static variable and a function can't have the
same name (assuming they're in the same compilation unit, or something))
In other words, identifiers generally shouldn't override each other; two
identifiers shouldn't have the same name if their scopes overlap
(typically, the scope of one being a subset of the scope of the other).
After all, it can get quite confusing when you wonder why some code
hasn't modified 'i', say, and don't realise that it's declared another
'i' in tighter scope.
Ultimately it's a coding style thing, and therefore subjective. But it
does make a lot of sense.
-Edward