Why are there no key_frames created with Python code?
Each curve object is still in the newcurves collection, hence newcurves[index] can be used rather than scene.objects[index]

The behaviour in the example sphere script you posted appears to rely on obj.location = (x,y,z) being set as opposed to obj.location.x = x etc.  

My advice would be call scene.frame_set(f) update your props, insert keyframe, repeat.  The frame argument of keyframe_insert defaults to scene.frame_current.  Also to keyframe in only the x location pass index=0.

# set initial locs / rots here
newcurves[0].location.x=-1
newcurves[2].location.x=1

bpy.context.scene.frame_set(0)
# keyframe in all at frame 0 
for curve in newcurves:
    curve.keyframe_insert(data_path="rotation_euler")
    curve.keyframe_insert(data_path="location")

# call frame set (updates the scene as well)
scene.frame_set(10)
# update the properties
newcurves[2].rotation_euler=(radians(90),0,0)
# insert the keyframes
newcurves[2].keyframe_insert(data_path="rotation_euler")

scene.frame_set(20)
newcurves[0].rotation_euler=(radians(90),0, radians(90))
newcurves[0].keyframe_insert(data_path="rotation_euler", frame=20)

scene.frame_set(30)
newcurves[1].location.z=0.12
newcurves[1].keyframe_insert(data_path="location", index=2)

scene.frame_set(40)
newcurves[0].location.x=0
newcurves[0].keyframe_insert(data_path="location", index=0)

scene.frame_set(50)
newcurves[2].location.x=0
newcurves[2].keyframe_insert(data_path="location", index=0)