Compositor viewer node output never updates when rendering via Python script
Solved -- my problem was actually related to Blender's hard-coded behavior in background mode, rather than to something going wrong with the render process itself.  In order to get the Viewer Node to work in background mode, you need to modify some source code and recompile Blender as described in the link, because it is disabled by default for optimization reasons.  Then run:
path\to\recompiled\blender --background --python my_render_script.py