It's down to the packet header, the whole difference between IPV4 and IPV6 is that the address is four times the size, so you have a 128Bit address instead of a 32Bit. What amazes me is that they didn't use 64 or 128Bit in the first place, but I don't think it was anticipated that so many people would require an address in the future. It's possible software could be written to take that into account, but the logistics of it would mean huge delays in data transfer speeds.
Still, you are supposed to design systems to be Future Friendly, and 128Bits is more systems than could possibly realistically exist on a single planet, not without a fundamental shift in technology, at least.
Edit: It should be noted that IPv6 routers etc are 100% backwards compatible, so there's no reason not to start the transfer over in places like the US, Japan and Korea and that would at least free up those addresses for the countries that are lagging behind, the problem is that the headers from IPv6 countries would be unreadable by those running IPv4, so you'd need some kind of NAT-resembling system on a countrywide basis to be able to connect to IPv4 sites. It's a real nightmare.