Are you using another AVR as a coprocessor?

I'm thinking that there are some situations where it would be easier to put messy protocol interfacing in a separate processor to simplify the main Arduino code.

I can think of three specific examples. One is a full-featured FAT/FAT16/FAT32 file system interface for an SD card. Another would be a sophisticated TCP/IP stack so that the main Arduino would be able to act more cleanly as a net server. Another would be to implement a ZigBee or Bluetooth stack to maintain a complex mesh network.