We are custom building a Cartesian 3D printer to be used in a production 3D printing environment, with the following requirements:

 - Intended Z resolution 0.13mm;
 - Dual extruders (primary + support material);
 - Four spools (two per material with y connector, perhaps add auto switch-over functionality later);
 - Camera;
 - Onboard 11" touchscreen for control & interaction, run by a Raspberry Pi 3;
 - Custom board based on ATMega2560 to control the printer;  
 - Printer should gracefully handle conditions like "out of material", etc.

Question: How to select firmware? 

Are there notable differences between the primary firmware options (Marlin/Repetier) for this setup?  From the google code groups, I understand the Repetier has a much cleaner code base, and apparently gives smoother physical performance.  Yet, from what I can gather, 95% of the community uses Marlin - is that correct?

Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?

Edit 12/April/2017:

For others looking: After much review, Klipper was selected as the most forward firmware - all kinematic calculations are done on the host computer, instead of on the microprocessor, resulting is significantly faster/smoother stepper movement.