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.