Because they incorrectly think it's proper to put leading underscores on "private" stuff. Among other things, C99 7.1.3p1 says:
All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.
The idea is that these identifiers are reserved for your compiler to implement its magic. If you peek into your compiler's headers, you'll probably see many double leading underscores. You're allowed to use a leading underscore followed by a lowercase letter or digit in some places, but it's best to just avoid leading underscores entirely.