The problem is, the different services could be split across hosts, not just ports. It seems SRV records provide the only option here but they're not supported by browsers. That leaves www as the only viable option to move web serving into a different machine.
Most web sites sit behind load balancers and stateful firewalls. They have many, many opportunities to do the port translation to make $name and www.$name work the same way.
The theory you espouse, that www was the only viable option to move web service to a new machine, was true in the 90s when we started doing this. That's how the practice came about. It's 2011. It's not an issue anymore.