The way I've got it figured, every machine establishes its home position after doing the reference point return, which is normally executed shortly after powering up the control. The home position is based in G53, which is called the "machine coordinate system".
You can change coordinate systems by calling them by their name, G54, for instance. An X, Y or Z value with the G54 will do nothing, unless the machine is already in G01 or G00 mode from a previous command. True, it does "reset the displays to zero", as you said, but no motion occurs on your mill, because you have simultaneously called the G54 coordinate system, and then commanded a zero move within it.
Certain lathe controls may invoke either G01 or G00 mode automatically, from a parameter setting which is read at startup.
Now, on a mill, the Z axis G53 home position is typically "up" somewhere near the top of the stroke, and it will have an assigned value of Z0. On a lathe, the G53Z0 might logically be placed somewhere near the face of the chuck. G53X0 would logically be placed along the spindle centerline.
So, when you command the lathe to G54 X0 Z0 (with only zeros in the G54 table), it sees that there is no difference between the G53 and G54 coordinate systems, that is, they coincide exactly. Because G00 or G01 mode is "on" by parameter perhaps, it begins a movement to that position. So, that explains why the lathe begins the movement. It would be interesting to know where G53 X0Z0 really is on your machine. You should be able to determine where this is, by what the displays readout, as soon as the machine is homed after power-up.
On a lathe, the position that the tool turret takes when the machine homes is basically at a random location relative to what I would call a "logical" reference point on the machine. On a lathe, the spindle centerline is all important, so that is definitely logical to call the centerline X0 in the G53 coordinate system. The chuck face makes a logical Z0 in the G53 coordinate system, too, but there could be other positions that the machine maker set up to serve as G53Z0. Every machine might use different chucks, or whatever, so the factory may opt to use some other Z0 reference.
When the tool turret is sent to "home" on a lathe, it does not return to G53 X0Z0, because, as you have discovered, the position may be inaccessible. But on a mill, all the axis do return to G53 X0Y0Z0 because the position is accessible.
Instead, a lathe uses a predefined point called a G28 position, which is based off the G53 coordinate system. Parameter settings in the lathe setup, define what the G28 position is. It typically places the turret somewhere out in front of the chuck, back off of the X axis far enough so that turret rotation will not cause a tool to hit the workpiece. Typically, the X axis will retract far enough to stop just short of the X+ overtravel limit switch.
G00 G28 alone will cause the turret to move to this stored position. If a value is commanded with the G28, then the turret will first move to that commanded value, and then to the home position, a dogleg sort of movement. Many guys forget that an XZ value with a G28 is an intermediate position. This is why it is common to see G91 G28 X0Z0 because then the intermediate point is incrementally "zero" away from the current position, so then the machine returns straight to the G28 stored position. On lathes, it is common for a U and W value to be interpreted as an incremental movement (no G91 required), so a lathe command might be G28 U0W0. The reason it is done this way is that you don't have to remember to set the mode back to G90, which could be a problem. But, I digress from the discussion
Now, for your reference tool problem. You would need to know if the controller has automatic calculation of the offset, and how to make it store the values.
When the G28 position was set up in parameters in your machine, it would make the most sense to have them correspond to the datum point of an external finishing tool, in pocket #1 of the turret. This is what I did when I set up my machine. I took trial cuts, using the display values of the G53 machine coordinate system. I determined by trial measurement, how to adjust the G28 X parameter so that it actually corresponds to the real position of T#1, relative to the part centerline. This may seem kind of a$$ backwards, but once its done, its done. Now I know that for this reference T1, the X tool offset will always be very near zero. Any other tools that I might use, if they cut the correct diameter, then their offsets are automatically "related" to T#1, because T#1 is correctly set in the machine coordinate system.
The Z offset for T#1 is not as unambiguous. The operator needs to determine what he will always use for a Z reference. Since I use one chuck on my lathe, I use its face for a reference. Again, I touch off the chuck face with T#1, and note the display coordinates in the G53 machine coordinate system. This should read Z0. If it does not, then the G28 Z parameter needs to be adjusted until it does. The goal is to make the Zoffset of T#1 = 0, and to remain this way, perhaps with wear offset or tip radius offset being the only adjustments ever made for the Z offset of T#1.
Now, I touch all other tools off the chuck face, and they are all related to T#1 automatically.
With this system, you should be able to machine without using G50 fictitious work offsets. The G50 is akin to the old G92 used on the mill, which has a certain danger associated with it.
And, when you wish to put a part of any length in your chuck, the G54 offset only needs a Z value, and this value equals the distance between the end face of the stock and the chuck face, if that is where your Z0 reference in G53 is located.
First you get good, then you get fast. Then grouchiness sets in.
(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)