But that is the only way you could do it.
No, it's not the only way.
There are Lua commands similar to Mach3's SwapAxis() command. What you do is set up the second spindle as another axis, like the C axis.
You use a range of tool #'s for one spindle, and another range for the other spindle
During a toolchange, you decide which spindle you want based on the tool #. If you need to use the C axis spindle, then you "swap" the C axis for the Z axis, making it the current Z axis.
It's easier to use G52 rather than the G54-G59 offsets, as you'll still be able to use those in addition to the G52.
I'm also building a dual spindle router.
But I'm undecided at this point if I'll be using Mach4.
You still would have to manually set tool heights for each tool independently which is why no one does it.
You could easily have the machine auto zero each tool after a tool change, which is what I do in Mach3. Not difficult at all.