How to copy objects and set their origins with Python console?
The reason all of them use the same location is because you are leaving them all selected.
bpy.ops.object.origin_set(type='ORIGIN_CURSOR')

will set the object origin to ORIGIN_CURSOR for all selected objects.
Add:
new_obj.select_set(False)

as the last line in your for loop.