This is not specific to engineering positions, it is a pretty common fixed policy in many industries.
it's shocking the number of developers I've seen left standed in their carrer progression (to quit eventully) due to overhiring and ending up siloed away somewhere
but I guess that's just kind of the way it goes working for other people though
This is like saying, "Making people drive slower will reduce total number of accidents. So lets just reduce all speed limits to 25 miles an hour. It's only the obvious solution right?".
This kind of lazy thinking is called incompetence, because finding really good balanced solutions is actually work. This work involves observing problems, understanding root causes, piloting and experimenting, bringing other mangers, skips and CXOs into alignment, executing retention deftly while keeping reports happy. But this is too much work for managers (but of course too much work for engineers is never too much work).
What a joke! No wonder SWEs complain so much about management.
AFAIK in US is typical to change SWE job every few years (those 2-3 years indeed). Those who succeed in doing this consistently (I'm not implying one should, or not) ganerally end up with a high salary, a higher position, and more satisfaction (assuming that change give them satisfaction).
Parent's observation may be a reasonable explanation when looked into context - the time to move on arrives after 2-3 years, and if there's no strong incentive, devs will start to feal uneasy, and move on.