Here is what I think is happening with your setup.
You are zeroing your machine with tool #0, which I presume has the offset of 0 in your tool table - but the ACTUAL length of the tool you are zeroing with is about 3 inches.
Then you execute T12 M06 and apply the 3" offset from the tool table. So your Z coordinate is now -3", and the tool change macro needs to raise the spindle 3 inches to get back to 0. And you probably do not have 3 inches of travel left, so your Z axis bumps into the limit switch.
The easiest way to correct the problem would be entering the correct length of the reference tool in the tool table.
And yes, once ANY tool is zeroed, the rest of the tools will be right on the mark as well.