I think part of why that happens is because we get to vote 'en gros', instead of 'en detail'. Countries with more granular voting powers tend to do a lot better at such things (Switzerland for instance). As it is, winner takes all or coalition governments are capable of getting large blocks of people to vote against their own interests by lumping in a token bit of good with a boatload of bad as long as the emotional connection to the token bit of good (as perceived by the voter) is a strong one.