My point of view is that adding a external processor like the pi or yun adds complexity. Most people have a realy hard time to understand the concept of asynchronous processes and how to communicate between them.
On the other hand the mega 2560 is more than big enough for some serious autonomous robot projects where the communication with the external world is limited. (I mean don't run a heavy web site on it)
For instance: I'm currently working on a full autonomous mow robot. It is 70 cm wide about 100cm long and ways more than 20 kg.
I still need to program the functionality "go to the recharger" but all other functionality is there and even though I use way to much memory due to some bugs I only have 16% of the program space used and 89% of the memory space.
So plenty of room left.
I don't know how much space ardupilot takes but I have found someone building a clone using a 644p with only 64K of program space and 2K of memory (which is 1/4th of what the 2560 has ). Where did you get your information they had to "jamm" it in a ATMega3560?
The bugs cost me memory only and lots of it. Due to the bug I can only run on 9800 BAUD. as I send about 800 bytes and 1 byte +-= 1 ms to send at this rate I use a buffer of 800 bytes. Because there are 3 serial ports that is 3*800=2400 bytes of the 7301 bytes I'm using.