Because it’s a loop that doesn’t let rest of the code continue.
Most blocks in HS execute at 1 per frame. About 60 times a second the Player goes through every object and plays one block from every rule (When) that’s running. But some blocks don’t count and the Player immediately goes on the next block in the same rule. Conditional If blocks are like that. The player immediately goes to the first block in the path, either in the If or the Else. When that first block is the custom ability that itself starts with the Conditional, the loop immediately and endlessly repeats. No other blocks ever get executed after that.
When you add the Wait 0, this is a normal block that takes one frame so the Player continues on to the rest of the objects/rules and doesn’t loop the custom ability until the next frame.