Originally posted by mattdm To be fair, this wouldn't necessarily have to be the case -- there's no technical reason firmware updates couldn't be delivered as binary diffs, just encoding the changes. But since the total size tends to be insignificant anyway, the cost of the added complexity isn't usually worth it.
Firmware is called firmware because of the way it's stored in the device. Just like a BIOS update on a motherboard, the firmware storage device must be completely wiped clean first and then re-written from scratch. The type of memory used to store firmware cannot be written to piece-meal.
Additionally, to make the camera's operating system as fast as possible, each instruction is stored in a specific address block. This is called a fixed data structure. That way the instruction can be accessed directly without having to use a lookup table first. Trying to update just part of the firmware (even if that were physically possible) would destroy that relationship and render the camera unusable.
This is why devices become "bricked" when a firmware update is not completed successfully.