Not sure if I understood your question completely, but the main reason is to be able to create multiple virtual host in one single physical machine. It would be wasteful if a single machine could host only one application, as it typically wouldn't be able to utilize most of the machine's resources.
It would work the same even with a load balancer. The clients would send an HTTP request to the load balancer on port 80 and the server would redirect the request to a specific VM on port 80, which would then figure out which site/app to serve depending on the host header.
If you were also asking why the port has to be the same (e.g. 80): it doesn't. But since we have this host header functionality to determine which app the client wants to talk to, we can keep using the typical HTTP port (80) for all hosted apps.