Hmm... I can see what you mean with the invisible not doing the trick. I sometimes fail to separate the logic Unity uses to do things and Construct 2 and things get mixed up (probably because I use both interchangeably and need to focus one project at a time).
Its a lot more easyer/more basic, it grows in the roots.
We need to be able to use invisible helper objects, so 'invisible' needs also to be evaluated by the conditions.
So, say ... We have 100 enemy's and 1 player.
99 enemy's are invisible (or somewhere in the marge of the layout, or not on screen, people do those things)
Now when you use the condition 'on player overlapping enemy' ...
The system iterates trough each enemy (all 100) and tests if it is overlapping player.
You see the fall in performance ?
If you had destroyed the 99 useless enemys, it would not be bizzy iterating.