It needs a crystal, since the first thing it does is set the fuses in an Arduino-compatible manner (16MHz external crystal.) (You could change this, of course. But one of the "features" is that Optiloader auto-detects the target chip type, and there isn't any way that I know of to tell the difference between a "bare chip" and a "chip with a crystal.")
Adafruit has taken the code and expanded it some (programs things larger than 512 bytes, for instance.) See: http://ladyada.net/library/tools/standaloneisp.html
As for Arduino-Ethernet, it should work OK, but I haven't tested it, and since the ethernet circuitry is on the same SPI pins used for programming, it could have side-effects.
(Do NOT try to use the rather ill-advised "power the target from IO pin 9" feature if the target is an Arduino-ethernet. It's one of those things that was just barely in-spec for nearly-bare chips, and the ethernet takes significantly more current!)