Can a shift register be used to extend the Arduino pins when an ethernet shield is mounted on the Arduino?
You can control a shift register with shiftOut or bit-banged SPI.

My page about SPI has a small library that does bit-banged SPI.

It is also possible to control a shift register using the same pins (MOSI/MISO/SCK) that the Ethernet interface uses, as long as you use a different SS (slave select) pin for your shift register. This may not be practical if the Ethernet card is active all the time. It is probably easier to do the bit-banged SPI or use shiftOut.