It turns out that deciding what a software developer is worth is a very challenging proposition because deciding which ones are good is an open problem. Probably the central open problem in our industry today. But salary conversations are largely not about that. In sufficiently large organizations they are about how well you, or your manager if they are good, play the game, and in smaller ones its about having the cash flow to back up outstanding liabilities.
In any case, I think its fair to characterize these approaches as a tactic, whether its a negotiation tactic or a real cost limitation varies from organization to organization but its not the employees job to worry about that. If you are in a good organization they are constantly making the value proposition to the company make sense, if not they aren't and you shouldn't feel guilty about either asking for more pay or leaving if it isn't provided.
This is very common. They often justify it with "In this company we're not paying as much, but we have greater freedom/cooler tech/<other benefit>". Well good for you. We have already established that we're a good fit, but I'm not working for 20% less than I can across the street.
The problematic behavior is when the people setting the pay bands get the value proposition wrong or they think they are paying market when they are not.
I also have an OK salary so this is partially about reducing risk and partially about giving something back.
The characterization of management as incompetents backastabbers is as childish as the one that says employees are lazy bums who should be grateful of their salary.
I asked a recruiter that placed me and he said he's usually taking 20-35% :D
Which is exactly why any developer in that situation needs to get out as soon as they can find a better position. Such a company is obviously not going to prosper in the long run.