I only have a Microchip Wifi module (WiServer) which is attached to an Arduino. Its hardly a fair comparison and the Wifi chip is really slow too (1Mbit). As expected, it performs pretty slowly. Its also proven to be pretty reliable however. The Wishield TCP/IP stack is pretty custom, built up on the uip stack which has a smaller footprint than LwIP which we are considering here for 100 mbit ethernet.
WiShield (Uip) compiles into less than 32 kilobyte Flash and runs in only 2k RAM. Its also available on Maple and can't imagine the same Wishield setup creating much overhead on a Maple if you average it out. I believe performance concerns aught to be more about handling interrupts, and who gets runtime priority rather than the memory footprint, which should be acceptable since you can tune the size of LwIP buffers. Unlike our computer there's no swap disk. So your Maple programs aught to be in contention when sharing control timeslice and not be sharing memory with the stack. Please correct me if I'm wrong about that.
I am unfamiliar with STM32 interrupt system. However if you set your program code off a callback fn() on a timer, isn't that at least guaranteed to be serviced on the timeout interval? Are there other ways to de-prioritize the servicing of ethernet / RMII interface over your own program code?