And just because a company has defined salary ranges doesn't mean employees have no voice in the matter. If they feel those salaries are not keeping up with market rates, they can make that known to management, or they can go find greener pastures.
It is a very worthwhile path, but it certainly is not easy for the founders (and is probably impossible in a large traditional, top down, public company where "the owners" are a faceless group of shareholders who definitely want to believe they are in control - even though they definitely are not).
At this point, we (my cofounder and I) have pretty much zero control over how much people are paid in the company. We provide advice to people making those decisions but we are not the decision-makers. And the conclusion of that experiment is that people actually seem to care far more about getting the arbitrary salary formula right than we do, so I believe it was very much the right choice to let go of this lever and let the company design its own salary structure.
Thanks to this situation (however difficult it was to get there), the problem you outline is not there because there is no "employer" entity separate from the employees that could collude or have incentives different from the employees.
I think for very senior roles, individual negotiations still might make sense, as the value prop of those hires is highly variable and can have big impacts on the organization. But for roles like Software Eng I, and Software Eng II, etc... in the long run it is better for morale, attrition, and equality to use defined salary ranges. And you can still use bonuses to adjust compensation based on performance.