Its common knowledge in programming that reinventing the wheel is bad or evil. 

But why is that? 

I am not suggesting that it's good. I believe it to be wrong. However, I once read an article that said, if someone is doing something wrong (programming wise) explain to them why its wrong, if you can't, then maybe you should be asking yourself if it is really wrong.

That leads me to this question: 

If I see someone is clearly reinventing the wheel by building their own method of something that is already built into the language/framework. First, for arguments sake, lets assume that their method is just as efficient as the built in method. Also the developer, aware of the built in method, prefers his own method.

Why should he use the built in one over his own?

Depends..
As with everything, it's about context:
It's Good when:

Framework or library is too heavy, and you only require limited functionality. Rolling your own extremely light-weight version that suits your requirement is a better approach.
When you want to understand and learn something complex, rolling your own makes sense.
You have something different to offer, something others' implementations do not have. Maybe a new twist, new feature etc.

It's Bad when:

Functionality already exists and is stable and well known (popular).
Your version adds nothing new.
Your version introduces bugs or limitations (e.g. your version is not thread-safe).
Your version is missing features.
Your version has worse documentation.
Your version is lacking unit tests compared to what it is replacing.

