Closing: this is in fact by design. Objects are only marked to be destroyed by the 'Destroy' action, and are in fact truly removed only at the end of the next top-level event. This is for two reasons:
1) it's a useful feature: sequences like "Destroy sprite"; "Create explosion at Sprite.X, Sprite.Y" in fact work when it would not if the sprite was truly destroyed immediately
2) the architecture of the engine requires that objects are not truly destroyed mid-event, because it may still be picked by conditions in parent events that still reference it.