Not sure if this is the right place to ask this question, but let's start here.
I would like to flash an Arduino sketch on EPS32 from an external micro-controller.
Does an Arduino sketch live in it's own FLASH block(s) on the ESP32 and effectively have it's own bootloader?
Or does the Arduino IDE have to rebuild/reconstruct the entire ESP32 FLASH which could be 2/4/8MegaBytes depending on the device. (and then use the ESP32 bootloader to upload the new flash)
I'm guessing the latter.
Is there any documentation on this?
Espressif would cover their bootloader so I guess they will have documentation and support for that.
I'm just not sure how an Arduino sketch is built on top of the ESP32 stuff.
Where does the Arduino IDE store the files to be uploaded or is it all done internally in the IDE?
It doesn't have "own" blocks but it uses the flash storage. The standard ESP bootloader is used so you don't have to change firmware to use the Arduino IDE.
No, it doesn't overwrite the whole flash, the operating system stays in it's part of the flash, just the part that is reserved for sketches is written.
That depends on your operating system. On Linux systems the files are created in /tmp. You see the paths if you enable verbose output during compilation.
To answer your question in the subject: Yes, this is possible, just connect the other MCU to the serial pins (as the on-board USB-to-serial converter is connected too) and talk the same protocol as the ESP uploader do.
If you enable verbose output during compilation under file -> preferences in the IDE, you should be able to see which file exactly is uploaded. I'm not familiar with the ESP32 but hopefully it provides the full path.