Blame lazy programming standards. Seriously.
Quality of software has been going to crap for years and years because most companies would rather do stuff quickly than do stuff right. So you end up with huge bloat you need some ridiculous computer to even run stuff that, if it was programmed half-decently, could run even better on even worse hardware.
Very very rarely are the additional features of high-end hardware actually needed or even used. Even if they are used, it's not ridiculous to write fallback routines for lesser hardware. Programmers are just slop at efficiency these days is all.
If people knew what all their computers of even a few years ago were truly capable of provided majority of software wasn't coded like shit (majority is coded like shit though, unfortunately), they would rightly be incredibly angry.
Because the hardware guys keep making better and better hardware but the software guys just keep doing a shittier job every year to the point it negates the benefit of the advanced hardware anyway.
Basically any high-level-only coders are shit programmers but that makes up like 99% of programmers out there today. Not to mention even a good programmer will intentionally slop it up if management idiotically rushes things all the time, which they frequently do. Take ten times longer to produce and make a product that's ten times better ... or release now. They always choose release now.