The OS-level API calls used to bind a multicast socket to a network interface are different when java.net.preferIPv4Stack is on or off.
With preferIPv4Stack on, MulticastSocket.setInterface sets the source IP on outgoing multicast messages (IP_MULTICAST_IF ioctl option).
With preferIPv4Stack off, it only sets the outgoing interface (a NIC index instead of an IP) (IPV6_MULTICAST_IF ioctl option).
This becomes an issue when there are multiple aliases for the same NIC, because the OS decides which one of the IPs to set as the source.
This doesn't break anything in JGroups, but makes it difficult for firewalls to filter the packets.