It kind of pushes the limits of practicality.
With the standard protocol it can take a long time to transfer that much data, and also 64K is a very LARGE sketch for an AVR.
So it was just a decision made at that time to limit it to 64k for the MEGA. Nobody has ever reported a need to flash more than that over OTA.
Do you have such a case?
In any case, it is an easy code change to allow more address bytes. In fact for M0 I did allow this in HandleWirelessHEXData() (image signature ends at byte 10 leaving 3 bytes for address):
#if defined (MOTEINO_M0)
flash.writeByte(10,':');
uint32_t bytesFlashed=11;
#else
flash.writeByte(9,':');
uint32_t bytesFlashed=10;
#endif
And the bootloader will look for those 3 bytes instead of just 2. 3 bytes allows 16MBytes, I think that is more than enough ;-)