Most other architectures made the same mistake. Gene Amdahl told me that there were dissenting voices who claimed that 24 bits was too big an address for the IBM 360 series.
Various ugly “small address hacks” came about to accommodate more memory. I could write about several but it would be painful; they are best forgotten.
I think that 64 bits is big enough. Some who remember the havok of the earlier hacks fear 64 may be eventually too small.
The advent of virtual memory split the dilemma into two parts: real address size and virtual address size. It is not clear to me which should be larger. The size of the virtual address effects more code; the real address size effects only the kernel. I almost think that 32 bits of virtual memory is enough but there are just a few applications on even my Macintosh that exploit bigger addresses to good ends to hold data arrays. More often I suspect that 32 bits should suffice to locate instructions but that would limit some language technologies that may effectively tame larger code collections.
Perhaps using bits from a data base key in the high end of a data address might be strategic, but several things might go wrong with that plan. First the kernel might not respond efficiently to such an unforeseen pattern.