I don't get this habit of always blaming every problem in the world on NAT.
NAT has (almost) nothing to do with that.
The real reasons are twofold.
1. As others mentioned, the work of maintaining a self-hosted service. Nowadays you can add two extra related problems: people expect reliability (which is difficult and costly to provide, for a hobbyist or a lambda), and Internet has become an hostile territory you must defend against all time (it's "cavemen meet Wild West" level of civility, all day long, no rest).
2. The main problem with self-hosting, is that the throughput is often asymmetric, and rightfully so. From 75/1200 bps modems to ADSL, we have always needed more download than upload so systems were designed that way. When we write one message, we read hundreds of messages from hundreds of people, when we upload one picture, we watch a thousand of them, and so on. When you self-host, you reverse the roles, and your access is very quickly saturated, it gets unsuitable as soon as you have a few connexions.
Just enable the port-forwarding feature of your Internet Box, and you can host what you wish on your server(s); it takes 2 minutes in its web interface and NAT 'problem' is solved. But the other two remain.