Serial.available() vs. Serial.print()

Don't you think it could help to introduce a Serial.flush() somewhere to prevent the overflowing of the serial buffer on the slower Arduino?

No, I don't. I figure that is the sender thinks the data is important enough to send that it is important enough to receive and process. Whatever needs to be done to ensure that that can happen should be done.

If the receiver can not be made fast enough, the sender and receiver need to implement handshaking, so that the sender doesn't send data until the receiver is ready to process it.

If that can't happen, there is no benefit to calling flush() to dump random amounts of data as opposed to dumping random amounts of data because the receive buffer is full.

I suspect that this is more than just theoretical work on your part. If you fill us in on what that larger picture looks like, perhaps we could be more helpful.