That’s not something unique to x86; eg. the PDP-11 also had its interrupt vector table starting at address 0. This only became a real problem when languages that treated address 0 as a sentinel value became popular.
IIRC you had to cast 0 to a pointer, which made it a null pointer as distinct from arithmetic zero. Or am I confusing myself... It's been a while.
I don't know if it persisted into 16-bit era CPUs & OSs, but early on the bottom of the memory map was faster to access, so things like interrupt tables¹ were often located there. The 6502 family even had specific load and save instructions for zero-page so not only was the actual operation faster once read & decoded, it took two bytes not three to store so was read faster² and took less space.
--
[1] you generally want the response to an interrupt to be as fast as possible, shaving a few clock cycles off could be pretty significant
[2] so a double time saving
The 8086/8088 microcode that handled interrupts used a special "segment 0" to provide the address, I don't think it would have been difficult to have some other hardwired value instead of 0. And on later x86 chips there is an actual register for it (IDTR) that can be changed by software - even in real mode, though for reason of backwards compatibility this wasn't usually done.
OS/2 saved me an enormous amount of debugging time.
I always laugh when people complain about null pointer seg faults. Those are a feature, not a bug. Finding bugs in your code immediately, rather than a few miles further down the road, is a great attribute.
Writing through a null pointer in real mode DOS meant overwriting the interrupt vector table. Probably the worst CPU architectural mistake of all time is locating that table at address 0. If you were lucky, DOS would just freeze up, and you could reboot it. If you were unlucky, it would scramble your hard disk, and you'd have to re-install the operating system and all your files.
The ROMs (i.e. boot address) should have been located at address 0, and the interrupt table at FFFFF.