Thanks for the reply. The switch involved doesn't seem to matter. The test jig uses a netgear 1000M capable 5 port switch on the lan side, connecting the two routers (192…2 and 192...3) carp sharing 192..1. Whichever of them is the carp master can't ping .1, while all other systems can. The system hosting as the carp master .1 can ping its own native address, but not .1
It seems the actual mac address on the outbound frames routed via the carp interface is not the carp lladdr, but the interface native address. So, the mediacom cable modem, which must bind to a specific mac address, won't bind to the carp llaaddr (which is VHID specific). This makes PFSense useless in a failover router setup with that ISP.
I've 'worked around' the problem by setting up a third little pfsense box with just two ports, acting as an extension of the cable modem, can't really use 1-1 nat, so I just port forward what little I need. It's a single point of failure, but then so is the cable modem and it still only risks that ISP's connection, the others are still protected by the failover router pair.
Still, if CARP could be improved to use the CARP logical link address when transmitting packets sent out the carp interface, and not the interface's native MAC address, then I could avoid maintaining an extra router and dealing with NAT issues on what should have been a native connection to the net.