It's manager myopia in many cases. I am sure there are some situations where a company may not be able to pay someone in a given role more than X dollars. That company may not view you as capable of the adjacent and more senior role that would increase your comp. But maybe you are on the edge and otherwise a solid employee that they would like to retain, but they feel it would not be fair to other employees in your role to adjust your comp "out of band". It is actually very hard as a manager to structure compensation in a way that is "fair" to everyone. So bands for roles are used. I mean, we do that at our small company. It works okay for the most part. Where it gets tricky is, you want to hire someone that you think given a year will grow into a senior role, but they are only an "entry level" player when you hire them. But they have comp requirements that look like the senior role's band. What do you do then? I think a lot of companies fall into this trap when they are inflexible with their comp bands. So, you may be up for that "big" promotion or adjustment in a year or two, and the employer thinks nothing about making you sit in your current band.

This leads to predictable issues for companies with rigid compensation bands. You get frustrated because you feel you are doing the more senior role job now. You express this frustration or sentiment to your "manager". They tell you that you are doing great, but maybe you need a little more of X before they promote you. Maybe they see things in you that make them feel you should not be promoted to the next role / salary band at that time. This causes you to hunt around. Another company that really needs someone who can do what you can do will just hire you to the senior band because, on paper, they see you look effectively ready for the senior role, whereas your current managers may [right or wrong for their situation] think you are not ready for it. Maybe it is myopia and they should just promote you and that is the right call, but maybe you really aren't quite ready, by their standards, for the role yet.

My experience with all of this has taught me that a big chunk of people are an "edge case" with special circumstances. Like, maybe this one guy who is not ready for the senior role because of performance issues can just go to a competitor and get a job there in the senior role. And maybe they do great in that role in the new environment. Maybe they fixed the flaws they had or they put in that extra effort at at new job, etc. There are so many nuances to this. But I think I would trace a lot of it to imperfect information on both sides. One employer may not be willing to promote you for whatever reason, another one hungry for talent is happy to pay you more and give you a shot because you are "almost" there anyway.

Maybe other companies just have very different comp structure and available cash. Maybe the manager is being stubborn or they just don't have good, objective criteria to measure your performance and you deserve that comp bump. I do think it is easy to not "see" someone and the great work they do when you work with them and manage them every day.

IDK, at the end of the day at my company we try to be as fair as possible, and we are willing to, and have often, made big comp adjustments once someone has proven themselves [in a relatively short amount of time 1-2 years or less] for that exact fear. Someone we trained up, like working with, etc. It would be a shame for them to go to a competitor for a 10-20k pay raise.

One final reason not to be overlooked is plain old greed. Some companies just don't care. They will suck every last thing out of a junior developer or consultant type role and keep you in that pay band for the longest time they can, or maybe they never actually intend to promote you, but they just won't tell you that and figure you will see the writing on the wall eventually and leave. And that is fine with them.

Anyhow, I have seen all of these scenarios play out in various forms over the years as a manager and employee. So, it is a multi-faceted problem that doesn't have one obvious answer. I don't know about the game theory aspects, but I assume on a large scale companies that don't adjust to "market" wages ultimately are forced to adjust to market wages or go out of business because enough people leave and they can't hire new people if their comp is too far from market wage.