You can also use the SetUnitX() and SetUnitY() jass functions which move a unit to the X/Y coordinate without interrupting order. I think it is SetUnitX(udg_unit_to_move, udg_real_var_for_x_coordinate) and similar to SetUnitY().
You can also use "Unit finishes casting an ability" event which is fired when unit successfully finishes casting an ability (contrary to Unit stops casting..., which fires even when unit is for example stunned). The disadvantage is that at this point, there is not target unit, nor target point, so you would actually have to have two MUI triggers:
1) when unit starts casting an ability, move the unit via SetUnitX and SetUnitY to the target point and save the target unit to variables (the MUI way)
2) when unit finishes casting an ability, load the target unit from variable and order caster to attack the target