And as for memorization: do you actually memorize MAC addresses for your interfaces? The answer is no, you don't, becase ARP handles all that for you. Well, for IPv6, DNS, mDNS and so on handles all that for both your IPv4 and your IPv6 addresses - or should, if you know what you are doing, as memorizing IPs doesn't really scale beyond a few dozen machines.
Yes, IPv6 is overengineered, but it gets the pain of having larger addresses in the packet done once and for all - the odds of needing more than 128 bits in the rest of human history are very small indeed. And if something radically new needs to replace the current IPv6 architecture, which is much more likely, the extra address bits are already there; only 2000::/3 is assigned for public use so far, and the new addresses would fit in the current IPv6 packet format already.
DNS and mDNS don't "just work". You don't need but probably really want HA for DNS which is overkill for a homelab user, and you really want a fixed address for that DNS, because who wants to fix issues when you can't even address your services, and you really want your routers to have fixed addresses for the same reasons; you need VLAN and/or Avahi reflecting for mDNS, and if you need firewalling on your LAN, have fun dealing with the fact that mDNS clients prefer GUAs, then IPv4s, then ULAs in that order, by RFC rule, and managing GUAs sensibly when your ISP keeps changing your prefix -- well, IPv6 is almost 30 years old and home/SMB equipment still can't handle that reliably or flexibly, if it even lets you do anything besides assign /64s, and there's nothing stopping your ISP from saying "here just have a single /64, sorry if you wanted to actually use IPv6 for anything clever like having multiple subnets, who would ever want that?" So you say "I'll just use DHCPv6" and it turns out that DHCPv6 kind of sucks and it also turns out many devices don't support that by default or at all, including every single Android and Chrome device, for starters.
IPv6 is full of these design issues where you have a lot of things that are supposed to Just Work, Look It's So Much Simpler Than IPv4, and look at all these address bytes (excuse us while we take 64 of them away for no reason), except you discover that nothing Just Works with anything else in mildly nontrivial cases. You end up on a yak shave only to discover no yak underneath, and you end up just having a broken network while standing in a pile of yak hair. The whole story above is just one example. IPv6 is a migraine in RFC form, and if it weren't that I accidentally bought some expensive IOT devices that are IPv6-only, I'd be happy to never touch it. At this point, it would have been a better time-money tradeoff to have thrown those in the trash as soon as I had seen the problem.
And the problem seems to be solving itself as the world is turning its back on globalism. China and North Korea already have separated themselves. Iran too. China still uses the same address space but it's not like there's open connectivity with the rest of the world. We'll probably cut off Russia at some point completely as part of some sanction (they've been preparing for that for years), and Europe will break with America if things continue. We'll just have interoperability at a few controlled border points then, like China already does with its great firewall. It'll be easy to do some address translation then.
Ps that's not something I'm necessarily happy about but I do see this trend emerging of every region trying to wall itself off.
People also thought that 4 byte wide IPv4 Adresses would be large enough. It's really hard to estimate how much you will need. And because numbers are effectively a free resource, it is better to overestimate.
IPv6 also gives you shortcuts to write addresses. You can abbreviate the longest run of zeroes with `::` and leading zeroes within a hextet can be omitted. This makes IPv6 address notation elastic.
But it's not free, after all every packet carries this burden. I know about the annotation but it also makes it very difficult to parse.
This is even easier with IPv6. At work we have a bunch of test devices, and you calculate the IPv6 from the device's serial number. Simple as that, no memorization at all.
Or if you're feeling playful, <prefix>::b0d, <prefix>::bed, <prefix>::dad, <prefix>::b1d...
When I'm at a different location, the biggest problem is usually figuring out if they use 192.168.0 or 192.168.1 :)
192.168/16 is a private IPv4 subnet (https://en.wikipedia.org/wiki/Private_network#IPv4) and the equivalent for IPv6 is the fd00/8 subnet (RFC 4193).
In what metrics? IPv6 is more simple to implement than IPv4. In Linux 7.1.1 IPv4 is 84kLOC, IPv6 is 59kLOC.