Object dimensions changing but not changing
It seems the answer is to do a scene refresh after updating values.   This works for this particular problem, but I suspect this issue is also elsewhere in the API.
Code up to 2.79:
bpy.context.scene.update() 

For 2.8+ version:
bpy.context.view_layer.update()