The issue is that on prem suffers from too many edge failure cases. It's cheaper to pay S3 to deal with the problem than to have a full team dealing with bit rot from RAID issues. It's one thing to have an home office/home lab server, it's another thing entirely when you have terabytes of content that can't tolerate any data loss and you don't have engineers on call at 3am.
I am no fan of the idea of reinventing everything to run on cloud primitives but you can't deny reliability of online software is a lot higher now than the pre HTML5 era. Back then, having more than two nines of uptime for random backend heavy web apps was hardly common while now it's table stakes.