let me describe what I am doing, I am not using the bootloader
I have two devices, both use ATmega128RFA1 and communicate through the built-in radio. One device is supposed to be the remote control, and the other one is a tiny quadcopter. The remote control has a FT232 on board. The remote control connects to the quadcopter to recharge the quadcopter battery and to update the firmware.
The remote control runs the ArduinoISP sketch if it detects the activation condition on reset, that's how it updates the quadcopter firmware. Since the ArduinoISP sketch is compatible with STK500v1 and I'm tired of using the temporary build folder, I just set my board.txt to use STK500v1 instead and pretend it's another bootloader.
So I have two Arduino IDE windows open during development, one to update the remote control firmware, and another to update the quadcopter firmware, and I only need one USB connection. But this auto-erase deal makes it super annoying to update the firmware on the quad. Actually I might be exaggerating a bit but I really just wish the -D was not there, or became an option.
I already know the SPI commands to trigger the chip erase, but I'm not sure how to detect that a upload is about to happen, yes I have studied the verbose output and it doesn't appear obvious, I don't think there is a practical way to make this change in the ArduinoISP sketch.
I'll post the entire project once I'm done, here's a preview http://i.imgur.com/icASi.jpg