Is there a way of having Blender reset the 'origin to geometery' automatically?
Scripting


Test run, Shift select 3 objects, extends middle to "kiss" outer

Test script:

Select 3 objects, extends the active (middle) to the outer objects.  Click the "run script" button to run. 

import bpy
import bmesh
context = bpy.context

def kiss_faces(ob, target):
    mw = ob.matrix_world
    mwi = ob.matrix_world.inverted()
    v = mwi @ target.matrix_world.translation
    if v.length &lt; 1e-5:
        return 
    f = sorted(ob.data.polygons, key=lambda p : (p.center - v).length)[0]

    pt = target.matrix_world.inverted() @ ob.matrix_world @ f.center
    hit, loc, norm, idx = target.closest_point_on_mesh(pt)  

    if hit:

        d = (ob.matrix_world.inverted() @ target.matrix_world @ loc - f.center).length * f.normal 
        for i in f.vertices:
            ob.data.vertices[i].co += d
        ob.data.update()

o = context.object
a, b = [o for o in context.selected_objects if o.type == 'MESH' and o is not context.object]
assert(o == context.object)

kiss_faces(o, a)
kiss_faces(o, b)
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY')


Note script above for 2.8, for 2.7x, hit CtrlF in blender text editor and replace all occurrences of  ampersand @ with asterisk *