The problem is that Inet6Address objects returned from InetAddress.getByName and getAllByName do not have their scopeid set. NetworkInterface.getByInetAddress uses the scopeid as well as the address to determine if the InetAddress being passed in is equals the address on one of the systems interfaces. As the scopeid is not being set in these objects being passed to NetworkInterface.getByInetAddress, a matching interface is never found.
To fix this we simply remove the equality on scopeids from NetworkInterface.getByInetAddress.
NOTE: THIS DOES NOT OCCUR WITH MUSTANG. In mustang InetAddress.get(All)ByName retruns Inet6Addresses that have their scopeid values set where applicable.