Geesh. Was it me, or did that explanation run on for a long time?
I can say that because I was going to give a similar explanation, but I think it's even simpler than all of that. People get compensated more the more social IQ they have.
The real question is: why do we have roles? The answer to that question involves the film school and widgets and such, but as far as the simple issue of money, people skills beat technical skills.
I love coding, and I love being a code monkey. There's something about solving problems that I find very relaxing and rewarding. But I learned a long time ago that anything you do with more than 2 people quickly elevates social skills to a critical point -- something we coders hardly ever talk about. We're all off on SO reading articles about dependency injection while somebody else already knows dependency injection and is learning how to communicate with people who have different primary channels and personality types. Many times we find such training "fuzzy" or "fluffy" or somehow of dubious value. So somebody else becomes the code monkey who can do both and we become the person they are trying to help. That means the other person is more valuable. Life is not a intellectual test. It's a social game played by groups of people.
(Lionhearted is right too. Lots of times it's just there for the asking. But knowing when this is true and when it is not, knowing how to negotiate your rates, knowing how to ask -- we're right back to social skills again)