Instead of getting into management where they can effect change, they remain in tech positions because there is no risk.
There's a glass ceiling over top tech types. You are actively prevented from moving (on, up, over, anything) because the clueless manager views you as his golden goose. I've been trying to move to management for about 6 years. Occasionally I met with some success. However....
speaking up could get you fired, because IT people are basically assholes, and would rather pinkslip than fight back, or worse, lose.
And it has - a couple times now. Most recently I was fired from CheapBastards (ok - tickets) because I disgreed (quietly and privately) with the "architect" and I got canned. The conversation went something like this:
VP: We're going to have to part company. Some of your team mates have complained that you're not making your deliverables.
ME: I've made every concrete deliverable I've been assigned since I got here.
VP: That's not what your team mates say.
ME: Which ones.
VP: I can't say.
ME: OK, name a deliverable I've missed.
VP: Oh, I don't have any specifics.
ME: Did I not complete the previous project OK?
VP: This isn't about that.
ME: OK, is there another team that would value my contributions?
VP: No.
ME: Fine. I'm outta here.
As manager I've had subordinates complain to my superiors when I didn't select "standard" technologies (because they figured it wouldn't help their resumes any).
A lot of the problem is our so-called pundits/leaders. The fuck wads that write articles for Java Developer, Artima, and so on. They create a culture of faddishness that undermines sound engineering practice.
The other problem is the complete lack of knowledge of history of the craft. Nothing is new, just a little different. The churn keeps the software vendors in business. Planned Obsolesence is alive and well in the software world.