Hey Sean,
a g-code file with multiple tool changes works fine with the Buildbotics and the buildbotics-derived Onefinity controller. It’s just that you have to put a useful tool-change routine into the ‘tool-change’ field on the SETTINGS page (there is no useful routine in this field on the stock Onefinity). You can use my Aiph5u’s ‘tool-change’ routine.
But I am not sure if this is your issue. There exist many issues around the Z axis not doing what it should. Search for Z plunge issue. Some are caused by bugs in newer firmware, some by cable breaks in the ‘curly’ Z stepper cable, some are caused by EMI due to the use of non-shielded stepper cables on the machine, and some by bit slipping due to the mediocre ability of the hand trim router’s collet to hold bits (in comparison to ER collets on spindles and 43 mm “Euro” milling motors).
Probably the Onefinity manufacturer simply doesn’t want to bother with it. But the original creator of the Buildbotics firmware instructs you how you can enter a useful tool-change routine into the ‘tool-change’ field.