Making internal services which use UDP visible externally was difficult. Redirecting inward connections was much slower than masquerading outward ones. It confused the users. The easiest way to imagine Port Forwarding is a combination of routing by port combined with packet rewriting. A convention router examines the packet header and dispatches the packet on one of its other interfaces, depending on the packet's destination address.
Internal hosts see the original connection source so so logs are meaningful.
It's easy to load split between the internal hosts. The choice of host can also depend on live feedback such as which machine has the lower load average. This decision making is done entirely in userspace so is easy to implement. As redirection is done at a packet level, you don't need different gatewaying tools for different services. It's very stable.