Oops, I've managed to brick my Arduino (an Adafruit ATMEGA32u4 breakout) by setting the clock select fuse to the wrong value. As far as I know that's not recoverable. RIP Arduino. So that's the end of this experiment for now.
Yes I ran the monitor's auto-adjust, and it fixed the image width. The picture looks stable, put there's a pattern of faint diagonal lines moving through the whole image including areas of solid color. I would guess it's probably due to noise from the microcontroller rather than jitter, but I'm not super confident. There aren't too many opportunities for mcu noise to infect the RGB signals here, and there's no directly shared ground between my mcu circuit and the VGA ground, which is where I'd be most suspicious of a problem. The ground path is back through the floppy port, through the IIci logic board, out the video connector to the VGA adapter.
Anyway this seems like a promising path if i can figure out the shimmer. Maybe it'll improve if I tidy everything up into a neat PCB instead of a nest of wires, or maybe it'll be worse because the mcu will be physically much closer to the RGB signal traces. I know there are techniques to help isolate EMI noise in power supplies, like ferrite beads and extra capacitors, but that type of design is definitely not my strength. Maybe there are some hints in the IIci schematic. It has lots of high speed clock signals but still manages to generate noise-free analog voltages for RGB.
If the shimmer/noise is insurmountable, maybe I should go back to the LM1881 + one-shot idea. I'm guessing that would probably work. It might even be possible to do it with two one-shots (one each for HSYNC and VSYNC) and no LM1881... need to think about it more. But that approach is not nearly as flexible as using an mcu.