I tried your project and it happens to me too. It appears to be a bug. Unity apparently does not like it when the gameObject the animationEvent happens on gets disabled in the middle of the event or something similar.
A workaround could be to use a coroutine to wait for the end of the frame instead of disabling immediately:
public void AnimationCompleted()
{
StartCoroutine(WaitDisable());
}
private IEnumerator WaitDisable()
{
yield return new WaitForEndOfFrame();
gameObject.SetActive(false);
}
Or only disable the SpriteRenderer to hide the Sprite:
public void AnimationCompleted()
{
GetComponent<SpriteRenderer>().enabled = false;
}