How can I move the pivot/gizmo to (0,0,0) in a Python script?
Apply location sets local origin to global
Via the UI can set an objects origin to global origin (scene (0, 0, 0)) by applying location CtrlA Location
equivalent of calling
bpy.ops.object.transform_apply(
    location=True, 
    scale=False,
    rotation=False
    )

At a lower level.
Method to set the origin of an object to a global location, without moving the object ie the vertices remain in the same global location.
Setting the origin for each object to geometry
Set origin to bottom center of multiple objects

Get the local coordinate of the new origin
Subtract it from all coordinates
Set the global translation to new origin location

Test script:
import bpy
from mathutils import Vector, Matrix

def set_origin(ob, global_origin=Vector()):
    mw = ob.matrix_world
    o = mw.inverted() @ Vector(global_origin)
    ob.data.transform(Matrix.Translation(-o))
    mw.translation = global_origin
    
# test call

set_origin(bpy.context.object)