The SNMP trap documentation states:
5. For each trap Zabbix finds all corresponding SNMP interfaces on hosts for the received IP or DNS address
6. For each found SNMP interface, the trap is compared to all regexes in "snmptrap[regex]" items. If found, the trap is set as the value of all matching items. If no match is found but there exists an "snmptrap.fallback" item, the trap is set as the value of that item.
If I interrupt this correctly, I would expect the trap receiver to lookup the IP against ALL configured SNMP interfaces and not just the default SNMP interface or the SNMP trap item selected interface.
However, I can only receive traps for a particular IP address configured on a host if the snmptrap item is manually configured to use that IP as the selected interface (which I can't do since we make heavy use of templates and discovery) or if I set that IP to be the SNMP default interface (which I can't do as well because I need to be able to receive traps against all IP's on a single host).