If you're using Move Unit Instantly then it's because it issues a Stop order. Also, when using the move method that doesn't Stop -> SetUnitX/Y(), the unit can be "displaced" and be considered still in it's original position despite appearing to have moved elsewhere - a Stop order will fix this.