Everybody wants the cool job of being one of the original coders. Nobody wants the not-so-cool job of actually maintaining it over the long-term, writing documentation for it, supporting it, etc.
I don't see it that way at all. I find that the maintainers are there because the code is useful to them. It's far easier to take what's there and fix a few bugs than start a whole new version just for the sake of having written it yourself.
Sometimes starting a project is simply implementing something from one language in another. The 'starter' is only interested in getting it to the "good enough" stage that he can use it. I don't consider that cool at all. That's just work. And the starter is just a porter. I'd rather have an existing library that does what I want to do in my language.
Starting a project can happen for more reasons than, "Look at me! I'm reinventing the wheel!" Sometimes, there's one bug that simply can't be fixed in an existing implementation, because it would break literally all the code. Take the '+' operator, for instance. What's 100 + 100? -56 of course! You can't just fix overflow in C or Java or whatever. You have to start something from scratch that does things differently.