I miss only one thing before making it based on the active vertex of the active object :

v_act->co[axis] and v->co[axis] are local, and I can't find a way to get an offset for the non-active objects and their selection based on a "v_act->co[axis] world value", don't know if that makes sense ?

As it turned out the original operator wasn't operating in the world space. So a rotated object was going to get its local X/Y/Z axis selected instead of the world one.
I addressed that and then the conversion to multi-object support in the commits above.