Managers squabble over the best developers. They fight to transfer their worst developers to each other, and don't let talented developers go work on other projects that interest them.
Every group gets the same number of raises, regardless of their performance, or effective developers in poor groups get nothing.
Stack ranking sounds like a shitty system, without a doubt. But I don't think you can have a well grounded opinion until you think about the issues it's trying to address.
Let managers release under-performing developers to "the bench", where they can be picked up by teams that need some new blood. People on the bench are cheaper to "hire" than people from outside, so managers have an incentive to prefer picking them up.
Managers don't "let" developers do anything. They have to actually have leadership skills (or enough budget) to keep their good engineers around by choice. Effective developers on poor teams find more attractive offers. Sometimes this will involve bonuses or raises. Sometimes this will involve more influence over product direction.
Obviously some sort of ground rules are needed (significant others on different teams, no kickbacks).
Every group gets the same number of raises, regardless of their performance, or effective developers in poor groups get nothing.
Stack ranking sounds like a shitty system, without a doubt. But I don't think you can have a well grounded opinion until you think about the issues it's trying to address.