Maybe this is another part of the problem. Limiting ourselves to port 80 limits the types of services we can create. But on the other hand, if we really wanted to run a service, then we would just open up the port.
But yes, NAT does complicate things, particularly for home users, but I guess that's a limitation of the universe.