I don't think he's arguing that "http://example.com:80" and "http://example.com" should have different representations: I (and I think he) agrees they should, but that the representation should be "example.com:80", in both cases. I'm not so sure about host, but having port sometimes be "" seems like it could catch people off guard. For host, you now need to watch out for the cases where the port is/isn't present. For port, when it's "".
To me, it's like the type of the variable. The variable "port" should contain the port, not (port|"").
To me, it's like the type of the variable. The variable "port" should contain the port, not (port|"").