Actually, there's a good reason why IPv6 subnets are so large - it's because with stateless auto configuration, the lower bits (the "Interface ID") of the address are derived from the MAC address, which is 48 bits.[1] (Stateless auto configuration is brilliant because, despite being stateless (unlike DHCP), no two devices will ever be assigned the same IP address on a subnet.) 48 Another way of looking at this is that IPv6 could have been just IPv4 with 64 bit addresses, and we would have been fine. However, the designers decided to add stateless auto configuration, and added another 64 bits to make it work.
[1] In privacy mode, the Interface ID is generated randomly instead of from the MAC address (to prevent tracking by MAC address). In this case, you still need lots of bits to make the probability of a collision insignificant.