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 < 64, so technically the subnet size could be /80 instead of /64, but does 16 bits really matter in the grand scheme of things, especially when there are 2^64 /64's available?
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.