Basically a good coder is not the same as a good developer. Coding is relatively easy - if you can visualize and solve problems using code, then you're a good developer. It's the thought process that makes you a good developer.
Coding challenges are often a good way to test this thought process. I often require candidates walk me through their code and explain their reasoning behind everything to see if they'll be valuable on my team.
However, coding challenges are just one way to ascertain someone's thought process. Watching people work on code during a game jam or hackathon often gives me an idea of their thought process, as does the advice of other people I trust who vouch for them.
So, no - coding challenges aren't always necessary. But unless there is a better way for me to learn whether you're going to be a good developer, then I'll give you one.