In software - It's highly desirable for an engineer to be adaptable - Changing companies is a good way to expose yourself to different environments/perspectives (and therefore become adaptable). It's hard to get the same range of experiences from a single company.
This is especially true if you want to become a technical manager/lead (or CTO/CIO) - You need to be exposed to different approaches so that you know what works and what doesn't. You need to have a clear picture of what constitutes a good engineering culture vs a bad one.
You reference a 1:1 ratio between engineers in one role and engineers moving around. Based only on my experience I would estimate that ratio closer to 5:1.
We also had a third category, who were the engineers that worked in support activities like manufacturing and failure analysis. They might have the same "job" for years on end, but the job itself changed constantly.
Being able to build a career moving between projects in a large firm, where your reputation is always right next to you, would be quite a bit more challenging for the mediocre developer.