If you want to hire the best person for the job, why wouldn't you want to do what you can to avoid discouraging good candidates from even applying in the first place?
Personally, I see any employer advertising for a position with stricter requirements than what they'll hire as advertising their own dishonesty. It just makes them look bad.
The fact that candidates that pre-select themselves out of being chosen is not really a big concern. Why should it be? The way around this is knowing exactly who it is you want for the job, but in that case I wouldn't be posting the job in a public forum. It's kind of what recruiters are intended for.
I would also point out that many good programmers don't like uncertainity (notably those with asperger), it is one of few jobs where it is a good thing. Not implying they are all rock stars, just that un certainty here is red herring.