You set velocity and timer in ready(). The timer is 'active immediately' but the physics engine hasn't "run" yet on the object which has to be added to the physics server, which I think is going to be at the end of the render frame (aka after all process() are called on scene tree nodes having the function). Not only does the rigid body need to be added to the server, the server needs a processing frame to 'move it'. In this case it's starting a physics frame behind the timer.
I think if you check the difference is going to be 1 physics step. (500/60 = 8.33333333333)
Keep in mind that the physics servers know nothing of the godot scene tree, only the physics objects added to them from the scene tree by the godot core engine. So the only things they know about are physics-bodies, (conditionally) areas (?), and joints. Adding, modifying or removing physics objects are subject to this delay.
In some sense this is necessary as physics objects like bodies/joints have multiple properties that may need configuration before being added to the server.
Joints get added to the server when they have a node_a, node_b or both set.