They don't need to be really long. Adding one more octet to v4 makes it 1 trillion addresses. Sure the header should support longer than that, but it doesn't mean everyone needs to use all of it.
Will you repeat the whole dance when you need a second extra octet? There are good reasons IPv6 is designed the way it is.
They considered 64 bit addresses at first but they didn't want to ever risk running out again so they doubled it again.
Try to remember it's not just about the sheer number of addresses - you also want to allocate them in big blocks so that few people ever need to expand their blocks, and they can split their big block into more blocks that are still big.
1 trillion addresses isn't anywhere near enough[1]. Remember that we're not talking about L2 here. (...I don't think 1 trillion MACs would even be enough if we want to ensure they're unique, and it seems the IEEE agree with me since they expanded MACs to 64 bits, but that's a different conversation.)
And you already don't have to use all 128 bits in v6. You're forced to use about 48 of them, but the rest is your choice. You can just... not use some of them. It's fine.
[1] https://www.rfc-editor.org/info/rfc1715/