First, there's the engineer-manager impedance mismatch. We're told by compilers to fix our work in very annoying ways. The machine has no fear of us and refuses to execute nonsensical instructions. (We generally prefer this over blind compliance.) Managers are simply not used to negative feedback because they never get it. People will lie to them rather than risk their careers on delivery of bad news. We, on the other hand, think everyone should be like a compiler and complain hastily when given bad instructions. And we don't take it personally when that happens.
Second, what most of us fail to realize until too late is that work is about social status for most people. It's not about getting the right answer or maximizing profits or anything else. I wish these assholes were greedy, because greed can be positive-sum as opposed to their short-sighted zero-sum social squabbling. It's about being the boss, and fending off the other guy. That's what most people care about at work, at least in corporate jobs.
Most bad ideas fail in a way that can still have positive expectancy for the originator's social status. That's why you see the bike-shedding. An idea has to be really, really bad to hurt the originator's social status before he can get promoted away from the mess. So, when you challenge a bad idea, you're actually stepping in the way of that person's career (or, at least, it's perceived that way).
That's why I can't tolerate executives. I understand that there's a need for management to a limited degree, but these entitled high priests who job is to "have ideas" (who also have the power to fire people who push back against awful ones) are a scourge. There should never be a culture where ideas are unquestionable because of their originators. We all have shitty ideas from time to time, and it's only these narcissistic executives who aren't honest about the fact.