In a free market, we would expect better coders to make more money than less good coders. The problem is that this is predicated on having perfect information (i.e. being able to actually rank coders by quality). In the marketplace, it's actually quite hard to know how good coders are relative to their peers. Sure, you could test everyone, but then that assumes your test is correct and that you have the time and money to administer it.
Therefore, employers look for discriminators. One of those discriminators is a four year degree. Though we anecdotally hear about impractical academic CS majors who can't code, most four year CS grads have a modicum of understanding.
Additionally, a friend of mine was recently in the position to hire. I asked him about the four year degree issue because my friend usually belongs to the school of "put up or shut up." His opinion was that a four year degree was important not just because of coding chops, but *because* of all the other classes that are typically required in a four year program. For him, having someone who could code and also write coherent sentences and speak somewhat intelligently with people who might be inclined to invest in the company.