Using a function that utilises Action Manager code on a Smart Object it is possible to offset that by 0.5 pixels (the resulting Layer’s Transformation Box seems to confirm it) but the result is probably not at all what you are after.
I have not tested with all Interpolation Methods, though.
A possible work-around might be up-sampling the whole thing to 200% and after corrections down-sample again.
Not ideal, certainly, but maybe someone else has a better idea.
Yes, I tried smart objects - the transform box shows that it moves half a pixel, but the moment you actually try to do anything (e.g. rasterize, merge or flatten the image) the layer hops to the nearest pixel. It's the same thing with vector shapes - you can move a path in fractional pixel increments, but once it's rasterized, it can only be translated in whole-pixel increments.
I've come to the conclusion that this is a permanent feature of Photoshop - all raster layers are locked to the pixel grid. I guess it's logical really - otherwise you would get image degradation every time you moved a layer. Obviously this is still going to happen if you rotate or scale, but this feature ensures that translation is lossless on its own.
So I'm using the scale-up/scale-down method - at 500% as I want 0.2 pixel accuracy. This pushes my processing time from less than a second per frame to 7 or 8 seconds - which is quite significant on 35,000 images - but I can always run it at night!
Just in case anyone else with a similar problem stumbles on this thread, here's what transpired:
After deciding on the scale-up/scale-down method to get 0.2 pixel accuracy on translation, I needed to rotate the images by small amounts to line everything up. That's when I found that the 'rotate' function in Photoshop has a similar problem - it only seems to work to one decimal place (for a layer) or two (for the whole image). On a 3000-pixel-wide image the rounding errors produce a jitter in the animated sequence. Of course with rotation, upscaling and downscaling don't help - an angle is an angle whatever size the image is. So, back to the drawing board....
I finally solved the issue by avoiding Photoshop altogether for this particular exercise. I wrote my own program (in VB.NET) to process the images - the .NET environment provides matrix functions to shift images by amounts down to .0000001 of a pixel (or whatever the smallest 32-bit floating point number is!) and to rotate and scale with the same accuracy. There's no need to upscale & downscale, so the program works fast - less than a second per frame to load, shift, rotate, crop, resize, rotate 180, and save. The results are indistinguishable in quality from those produced by the Photoshop script, and the time-lapse sequence is now rock-steady. Hooray!