The "problem" is that some of the truly excellent coders/developers/etc are:
1) prima donna assholes - I have no desire to work with someone with whom I want to kick in the teeth every time they fucking open their goddamned mouth. Do your job. If you spent more time coding and less time telling everyone how amazing you were, we'd think you were actually amazing because you get shit done.
2) not as excellent as they think they are. I'm no rockstar coder. And yet I've been handed codebases where management were absolutely gushing about how smart and awesome and whatever the previous dev was and once I get the code open, it's full of stack overflow paste jobs, half-assed code and I think "Wow, they paid this dude how much???" It's like thinking you're going to get a Sam Maloof and come home with an Ikea and everyone thinks it's amazing. On the other hand, if that's the standard, why, I guess when in Rome..
3) "always looking for a challenge": this can be taken a couple ways: first, because of #2 above, they don't want to be around when someone finally busts them out on it, which would break their fragile little egos (not really. those checks are long cashed and spent. Can't really blame them). and Second, they're going to jump ship every 8-12 months looking for "something new".
And frankly, #3 is probably where it hurts the most. But, with our new system of "zero loyalty between either party", from a corporate perspective, if I have to train and bring up to speed a new dev every time I need to change something, I might as well do it for 1000rs a day vs $500+/day.