Early on, memory size was little (64 KiB) and it just needed a 16-bit register to address it. But later memory with 1 MiB came. So we need bigger address registers. But in 8086 CPUs instead they used another register and called it offset.
So with 16-bit main register we can address 65536 segments and with 16-bit offset we can address 65536 bytes in those segments so the whole memory that we can address should be 65536 * 65536, that means 4 GiB that we can address.
But on an 8086 we can address 1 MiB with a 32-bit far pointer (16-bit segment + 16-bit offset). Why is that?