It seems you are the only one with this specific issue so my guess is there is something "special" about your install. The images uploaded through the Media Manager go into /static? How did you define this folder for the uploaded images? Did you redefine the UPLOADS constant?

Sorry, I should have clarified — I'm not uploading the images through the WordPress interface. I'm simply placing the image files and their @2x equivalents in the "static" folder (using FTP), and the WP Retina 2x plugin automatically detects and serves the appropriate image. This works fine for my other WordPress sites, even the ones using the WP Retina 2x plugin.

Both the main site and the subsite images are using standard absolute paths:<img src="/static/image.jpg"> and <img src="/subsite/static/image.jpg">
And the regular non-retina images are displaying correctly on both the main site and the subsite. However, the retina images on the subsite are not being displayed, because the WP Retina 2x plugin is looking for them in the wrong place: /static/* instead of /subsite/static/*.

I'm reasonably savvy but not a full time dev. It feels like a bug, but I'm not sure how to go about isolating it further. Any pointers?

I have worked around this issue by creating a symbolic link from the "correct" image path URL to the "incorrect" image path URL. The result of this is that the non-retina images load from /subsite/static/riding-a-bike.jpg and the retina images load from the symbolic path /subsite/subsite/static/riding-a-bike@2x.jpg.

Here are the shell commands I used to do the workaround, in case they are useful to others:

The problem will always happen unfortunately because the plugin is made to work with images you upload through the system. If you create a static folder (which is not the 'upload' folder) the plugin doesn't know where are the files exactly... even though it could try to guess through the original image path, it would be really a guess and in the code I prefer to avoid any guess and stick to global var or the WordPress API to clearly identify identify the path for the retina images.

To be honest, I think the symbolic link is the right thing to do: you already using a trick around the system by creating your own static directory for the images and upload them by yourself (which is fine) and the symbolic link will help all the plugins and the system to get a reference to it. I think your solution is much cleaner than adding an option in the plugin or have some "guessing" code.