Problem mostly solved, thanks to Vortx Erik! The Advanced Image Viewer for v10 has a reinitializeZoom() function in imageviewer.js which passes the correct URL for the chosen color to the zoom window. (I ended up replacing the whole setColor(newColor) function, just cuz there were some other variables I would've had to hunt down, and this was easier.) I prevented the pop-up image from also showing up in the main browser window just by adding event.preventDefault() to both cases in the popUpLarge() function.
The only thing not fixed is that products using size/color options do not have images in the shopping cart, though they *do* have the correct images in the minicart. As far as I can tell, the "pColorImageURL" parameter in minicartcontent.xml.config is correctly concatenating the default image filename with the selected color, whereas shoppingcart.aspx is getting the (presumably default) image URL from the shopping cart control, which I guess is part of the source code I don't have. Maybe I can rewrite the URL in the cart-product-image div? I dunno. It's a problem for another day.