Istio Listener Configuration

Is there any documentation on why Istio creates listeners in the manner that it does?

For instance why services that are non-HTTP are provisioned a virtual listener for the service IP:port, whereas virtual listeners are created for each HTTP port (0.0.0.0:PORT).

I am looking into the different listener configurations to determine why this may be but nothing is jumping out at me right now.