Loading software onto the bits and pieces.

Some shields have some smarts, and you would not re-code them. Display shields with their own interface hardwware for example. Many are just devices that are 100% controlled by the Arduino and have no capability to do anything if not connected to a microcontroller. Motor shields, IO expander shields, etc.