How to recenter origins of objects on one axis
Bounding box center

IIRC center to geometry is also the same as bounding box center. 

Test script, finds the bounding box center cog and only translates the z component.

import bpy
from mathutils import Matrix, Vector
context = bpy.context
ob = context.object
me = ob.data

bbox = [Vector(b) for b in ob.bound_box]
cog = sum(bbox, Vector()) / 8

me.transform(Matrix.Translation((0, 0, -cog.z)))


Changing last line to 

me.transform(Matrix.Translation(-cog))


will move origin to center of bounding box.