The important, and difficult, thing about libc is that is HAS to be completely backward-compatible at an ABI level. Today I can take programs that were compiled against libc's shipped with distributions 10 years or more old, and run them on my up-to-date systems with no problems caused by libc. Making this work takes a lot of detailed effort in weak linkage, linker symbol versioning, multiple versions maintained, etc. etc. Alternatives such as just providing lots of versions of libc are simply not reasonable/sustainable.
Libraries that are not careful about this type of thing are a constant source of pain and torment (I'm looking at you, ssl/crypto!)