Different frames make rigid bodies act differently
The problem is the animation starts at frame_start and ends at frame_end and since end_frame = start_frame + speed the duration is always the same but shifted.
To achieve the desired effect the animation duration should get longer when frame_start gets larger, one way to do it is to set the first keyframe at 0.
so the first key frame shouldn't be the start_frame :

    # First keyframe
    scene.frame_current = 0
    bpy.ops.anim.keyframe_insert(type='Location')
    print(start_location)




if you want to start at frame_start and end at frame_end and get different results you have to change the frame_end expression :

frame_end = speed + 2*frame_start


this way the delay the start the longer the duration is , giving the cube lower speed ( less momentum )  and it will travel shorter