This is sort of by design... "Destroy" means "flag to be destroyed at the end of the event sheet". This is because people commonly write events like
Destroy Sprite
Create explosion at Sprite.X, Sprite.Y
If the Sprite was really destroyed, the explosion would have nowhere to be created because the Sprite doesn't have an X or Y co-ordinate any more. I could fix the two cases you've shown, but the object would still actually exist until the end of the event sheet, which might just make for some more confusing cases.