Do AVR registers and ports need to be initialized to zero?
The I/O ports of an AVR are set to INPUT / Tri-State / Hi-Z (DDRx = 0x00) upon reset. Most microcontrollers (if not all?) have this behavior. It's the safest state for a pin to be in.
So yes, you can rely on the ports to be set automatically as inputs.

Some excerpts an the ATmega16 show exactly that:




  The Port C pins are tri-stated when a reset condition becomes active,
  even if the clock is not running.