IMO, I think your method forces you to have your tool home position at the XYZ0 of your part. If you want more room in order to change tools, you can also jog (or perhaps make an MDI move, I don't know your controller's capabilities) away from the work "datum point" ($10 word for your part's chosen reference point).
Say you use an edge finder to pick up the work corner. Then, with the spindle set right over this corner, you can set all axis to zero as you may already be doing.
Then, move clear, lets say to X-2.0 Y-2.0 with the tool raised at Z1.0
Now, rename this position G92 X-2. Y-2. Z1. This allows you to describe any tool position you like in reference to the workpiece's coordinate system. What I'm trying to say, is you are (likely) not locked in to using the work's X0Y0Z0 as your only G92 home option. G92 home is relative to the work's X0Y0Z0, but doesn't have to be at that location.
A word of caution: I usually include the G92 line in my program. This makes the assumption that the machine has always returned to home before the program is re-rerun. I have shortcut methods on my controller to get back to this home position, even if I abort or E-stop, but it is imperative that you must be at this position before allowing this line to run in automatic mode.