reading from 4 SoftwareSerials one after another

This explains much of it:
http://forum.arduino.cc/index.php?topic=11869.msg90766#msg90766

The Arduino only has 1 interrupt flag, so if an interrupt comes in during an ISR where interrupts were disabled, the next interrupt that gets serviced after the interrupts are enabled will be priority-based. Add to that the fact that every instance of SoftwareSerial creates a receive buffer...