I have been programming networking/communication stacks from some time (almost 10 years) in the embedded space. The reason I say that an RTOS could simplify you architecture is because you can:
(1) abstract complex state machines (by using the provided data objects) (2) Hide implementation details (by creating stand alone modules with little dependencies) (3) Encapsulate data (instead of using global state and/or status flags (4) Change the data flow with little effort (i.e. remove protocol handlers or add hooks) (5) High level applications do also benefit from the multitasking environment in the same way as the networking stack.
I agree with you in that you can get away without an RTOS, but a simple scheduler with some synchronization primitives can make our embedded programming life much easier.
Rene