Hi p53--
Your question is far from dumb.
I'm afraid the "one at a time" rules applies to the actual reception of the data and not just to when you check the buffer. The reason is this. If two devices are connected via "soft" serial ports, we have to assume that they are transmitting independently to the Arduino. As you say, it is entirely unpredictable when a byte might arrive from either one. But reliable reception on a software port requires that the whenever a byte arrives, the processor is 100% occupied in receiving it. So you see, if two bytes arrive from the ports at close to the same time, the processor can either abandon the partly-finished byte that arrived first to process the second, or ignore the second in favor of the first, but it cannot process both at once.
That's why you can't actively receive on two ports at once.
However, there are many successful designs out there where, say, you monitor the serial GPS device for a while, perhaps processing a single sentence, and then make your XBee active for another while. You might also see if one of the devices might be attached instead to a hardware port.
I hope some of this helps. I'd like to help your project succeed.
To answer your last question, no, I have long wanted to add a "reference" section to all my Arduiniana libraries, but unfortunately the project has not yet bubbled up to the top of my priority stack.
Good luck!
Mikal