If you're asking about this Arduino Ethernet Shield, then it has a very poor schematic related to the reset. IC1 (CAT811TTBI-CT3) is responsible for the +3V3 rail supervision and reset generation but supplied (see its VCC pin) from the +5V rail. +3V3 is generated by the LDO (IC2) from +5V too. It is hard to say what are happening exactly but this schematic could source the problem.
Why does it works when powered from a PC USB port? May be, it is not very explicit, but when an FTDI FT232R or similar based UART (console) enabled Arduino board is connected to a PC via USB, one line of the FT232R is connected via a capacitor to the reset line of the Atmega chip and, correspondingly, to the IC1 /MR input of the shield.
When you connect the board to USB, the power is applied first, then the USB device is enumerated, then it begin to drive its outputs (including responsible for the reset via the corresponding line) and thanks to that delays the LDO has a necessary time to start before a reset pulse arrives the /MR input of IC1.
When you connect the board to an external power supply, the FTDI chip is not enumerated and does not drive any outputs, therefore there is no (additional) reset pulse after the LDO is ready, thus you need press the reset button to append that pulse in the acceptable ("IC-ready-to-reset") time manually.
One possible solution in hardware is the next: connect IC1 pin 4 (VCC) to +3V3, place a 10k resistor in series between the reset button (TS42) and IC1 pin 3 (/MR). Or use a free Atmega/board i/o pin/port to drive RESET_W individually---connect the port to the RESET_W line via a 10k resistor in series.