My guess

I can’t pin it down precisely, but it seems to me to have to do with the attack anim exit time. If an attack animation is cancelled early by movement, the next time the attack animation runs it seems truncated, so maybe the alotted animation run time is not reset but carries over the run time from the previous call?