I am thinking it may be something in the M6End macro that is being ignored during the toolchange. The M6End macro is only used when in the Stop Spindle and wait for Start mode.
It will likely need a bit of time before we can be sure this has solved matters but fingers crossed.
Regarding the spindle speed change, if you have always got a spindle speed and start after a tool change then you wont need to put the M3 in as I said above but it is a safety thing in case your code doesnt have a new spindle speed called. With the M3 there the spindle will start at the last commanded speed and then when another speed is called in the code it will do that speed. If there were no M3 in the lines I said to add then the spindle would start, when commanded later in the code, at the new speed. As mentioned however missing the M3 out could lead to trouble if there were no new M3 call further in the code.
Hood