Part of the problem is the word "flake," it such a bad choice in this context. It's reasonable to skip over someone who is overqualified for a position. If it really won't challenge them and you can't pay them market rate for their talent, and there isn't a huge upside in responsibility...
The odds are that they won't be around long, and that doesn't mean they're a bad person or someone who can't get things done.
OTOH, the correlation != causation thing is huge as well. One of the reasons some people stay for long periods in one place is that they aren't that marketable because they really don't do much. Nobody is taking them out for coffee on a regular basis and gently trying to poach them.
Sometimes the people who move most often are the ones who have the most choices. Sure, you can label them as "lacking loyalty" or some such, but you cannot assume that those who don't move are automatically loyal. They simply may have stayed in one place because they had very little opportunity to advance by moving.