In case you have ever used a segmented programming model, you'll understand that it sucks. You have to move things around all the time. Pointer calculations and comparisons stink.
Or, if you need extension bits for addresses : it makes life miserable. It looks so simple and harmless at first... But it forces you to keep track of auxiliary data all the time !
Banked memory ? That's terrible because you have to partition your software, and if your platform evolves, or granularity changes, you're forced to change your SW accordingly. Who uses banked memory extensions today, except Microchip's PICs ?
So if you have a N-bits processor, then this should be your pointer length.
Are you making a 16-bits processor ? Then be happy with 64K bytes.
If you need more then please, avoid the use of all the kludges likes segments, extensions etc.
Today, it's far simpler to choose the right CPU with the right pointer size from the beginning.