1st, I am using Serial.begin(), not SerialUSB.begin().
Yeah, but on some platforms, Serial == SerialUSB...
If you're restricting yourself to actual UART hardware on both systems, then 500kbps is probably a practical upper limit for the AVR Arduinos. In theory, the UART itself supports quantized rates of 2M, 1M, 500k, 250k, and ... closer together numbers as the rate gets lower. But you're talking about a relatively unoptimized per-byte interrupt and only two bytes of buffering in hardware, so... 500k, perhaps.
Due or Zero have faster clock rates and smarter baud rate generators, but they also have higher interrupt latencies and (IIRC) less optimized code. I don't know if they'll go faster. There is also the possibility of using DMA with the ARM UARTs. and it will depend on whether you're connecting directly to the serial port pins, or going through a usb/serial converter or two.
On the third hand, you should note somewhere that "Asynchronous" serial communications were never really intended to run at the sort of bitrates we're talking about. If you really want more than 500kbps, you should probably look at a different comm protocol (like USB or SPI. Although the Arduino USB and SPI implementations are not very good for high speeds...)