The Zabbix host is the main grouping object containing actual running items and triggers. Therefor it seems reasonable to create multiple Zabbix hosts for a single physical host when the physical host contains unrelated applications that should be monitored by different groups of people.
These Zabbix hosts must have different Zabbix host names, which is also the key the agent on the physical host uses to look up the active checks it is supposed to run. A Zabbix agent can thus only run active checks for a single Zabbix host.
Making the Zabbix agent on a physical host run all active checks for all Zabbix hosts could be accomplished in different ways:
1 Many agent instances could be installed and individually configured on the physical host. Possible today, but impractical and inefficient.
2 The Zabbix agent could have a list of host names to get active checks for and run all tests returned by the server for any name. Still impractical but more efficient. Does not require changing the agent protocol.
3 The Zabbix agent could be made to get active checks by something else, e.g. agent interfaces (host name/IP address:port number), which would be the same on all Zabbix hosts on the same physical host. The server would respond with a union of active checks. This could be an option on the agent with default off for backwards compatibility. Probably does require extending the agent protocol.