Hi
The main issue with serial on microcontrollers and the Arduino software is there is no flow control implemented, so everything works okay whilst bytes transferred are bursty in nature and less than the buffer size, but for continuous streams of data or larger amounts of data buffer overflows and buffer underruns are inevitable.
Buffer underruns, where we expect to have some data but find it isn't there yet and so the buffer contains nothing we tend to deal with as a matter of course with Serial.available(). Transmitting, then we generally don't check in the same way and just tend to get away with it, unless we start exceeding the TX buffer that is, or exceed the RX buffer on the destination device.
One option is before sending data is check how much can be sent into the buffer using Serial.availableForWrite() and only write the number of bytes available in the buffer, then do something else until more can be written.
The receiving device may support XON/XOFF, so will send an XOFF byte back if its own buffers are full and the data can't be processed, so the microcontroller could look for that and stop sending if that byte is received, and then start sending again when XON is received.
Personally, I think it is better to deal with the problem by implementing some sort of check, such as availableForWrite, rather than hide the problem in larger buffers, which may not help too much as it could just push the problem to the receiving device where it starts to receive too much data and so its receive buffer overflows and data is discarded.
Regards
Phil