blender 2.8 refresh the graph editor after removing a modifier?
Ok, damn, figured it out. I added one line of code that fixed it.

i.modifiers.update()


So now the function looks like this, and it works:

def main_step():
    obs = bpy.context.selected_objects
    for ob in obs:
        fc = ob.animation_data.action.fcurves
        for i in fc:
            for j in i.modifiers:
                i.modifiers.remove(j)
            i.modifiers.update()