I don't use Virtual Box enough to understand how the internal routing is working between machines. The fact you can ping using IPv6 indicates that the VM's are sharing a link layer. I can explain what is likely to be occuring for IPv6.
Each of the VM's will automatically configure its Link-Local IPv6 address. This is identified by the start of the address being fe80::/64. The final 64bits are an modified EUI-64. This is essentially a concatenation of the first 24 bits the ethernet ports MAC address, the hex value FFFE, and the final 24 bits of the MAC address, this string is then hashed with a random number using MD5, producing a new obscure link-local address. (RFC4941 for the details). In Windows 7 you'll see that the link-local address varies overtime.
When pinging the hostnames of the machines, they will learn each others IPv6 address from either DNS if its populated with the AAAA records, or using Link-Local Multicast Name Resolution, which is similar to DNS. Roughly its the same as DNS, but a IPv6 Multicast to FF02::1:3 (special mulitcast address for LLMNR), on udp port 5355. (or a local hosts file, but I suspect you are using LLMNR)
One you have the IPv6 address, Neighbor discovery protocol will use ICMPv6 to multicast a Neighbor Solictation message. I'm not going into the details (if someone really wishes I can, but its very dry reading) but in this instance ICMPv6 is performing the same function as ARP in IPv4, to build a table relating IPv6 address to Link-Layer address. You can see the IPv6 neighbor cache by running the command;
netshow interface ipv6 show neighbors
This will give you a list of all the IPv6 addresses that your machines know about, and are able to communicate with on the local link-layer. It will even flag which devices are routers, if they exist within your IPv6 network.
This is why your pings are working over IPv6. Local networking is simiplfied by the use of the link-local addressing, and its done all the configuration for you. The issues with IPv4 everyone appears to have pointed you in the right direction. The machines are on different IPv4 networks, with no router inbetween, and that should be the reason they are not communicating.