While I agree with your points, rejecting a company because it makes that demand isn't quite right. If (hypothetically) you have 2 equally good programmers, and the only difference between them is one has a degree and the other one doesn't, then its natural to choose the former
If you have two equally competent candidates, hire both. It's surprisingly difficult to find good programmers though, so ending up with 2 awesome candidates to choose from is unlikely.