separate programming utility from main microcontroller

Many Arduino boards (notably the Uno) have two microcontrollers, which makes them more expensive than necessary if you don't need PC interaction. Wouldn't it be better to move the PC interface to a shield? The Uno would be cheaper, and you only use the programming shield for, well, programming and debugging. If you use stackable headers for the shield you can use any other shield for your application while programming/debugging.

This was my idea: this doesn't require a redesign of the Uno, just don't populate the 16U2, the USB connector and peripheral components. The best thing is that all three connections between both controllers are available on the headers, so even for the shield no newly designed PCB is required. For the shield populate only the components left off the Uno board.

Update: Unfortunately, upon further investigation it appeared more complicated. There's also USBVCC, which comes from the USB interface on the shield, and has to go to the power section on the main board. Or does it? The USB interface can have its own 5V from the USB, and since you want to use tha main board standalone it will also have its power supply.

You mean like the Sparkfun Arduino Pro 328? IMHO, if you give up the "plugs directly into the usb port of your PC" aspect of arduino, you might as well be a random minimalist breakout board. Needing a separate programmer of some kind is a pretty significant hurdle for a lot of people, or it seems to be :-(

USB chips are generally cheaper than the board space and connectors needed to add them to a board that doesn't have them... In the original Arduinos you were talking maybe $6 worth of components vs a $30 USB/Serial cable. Now you might be looking at $1 worth of components vs a $3 USB/TTL cable. (not that the official boards use the really cheap components, but it IS a possibility. Arduino Nano derivatives with CH340g USB chips sell for about $5 from "reputable" Chinese vendors.

The whole ethos of an Uno is that you plug it in to PC, program it, unplug, apply power, deploy. That suits a load of people for development, and I daresay a lot of Unoes even get deployed permanently.

Even if you deploy a cheaper solution, still takes a lot to beat an Uno for development.