Is there a Serial write buffer limit and does the Arduino reset if it is hit?
It turns out this problem had a very different cause, once I was able to eliminate the other variables. Having disconnected literally every component from the board and uploaded an empty sketch:

void setup() {}

void loop() {}


the board would still periodically reset itself.

I eliminated:


flushing the receive buffers,
eliminating all receives by disconnecting pins,
speeding up/slowing down the serial port/s,
speeding up/slowing down the GPS reporting rate,
auxiliary hardware,
code,
includes,
defines, 
laptop power supply noise,
board revision in Arduino IDE,
Arduino IDE version,
USB port on laptop,
trying this hack to prevent the RESET pin from going low,
another Mega 2560 and a Due


None of the above influenced the issue.

The thing I did not think to check was whether the board would work with another power supply alone. This was a result of hunting for another power fault in service and with the laptop plugged in, finding a periodic, random reset.

Ultimately, I plugged the board into a monitor USB output, then a car charger power supply and finally found the issue was eliminated. Even plugging into another computer solved the issue. It appears that either the Arduino driver in Windows or the Arduino IDE software itself, would periodically poll the port, causing the board to reset. While the serial monitor was running, I assume the driver or IDE felt no need to poll the port, thereby leaving the board un-reset.