It may be the sender has more data than will fit in the receive buffer. In that case, the serial port should use the RTS/CTS to stop the sender. When you clear the serial buffer with flush(), the transmissions may be resuming from the sender.
As a test, do the flush, wait a bit, then check the receive buffer again.
Serial.flush();
delay(100);
if(Serial.available() > 0)
{
// do something here to signal more data was coming from the sender after the flush
}