using GOTO for anything I can think of is pretty bad coding.
Now come on, this isn't true. How else will you jump from part of a routine to another? This is what GOTO is for. I use it in events to Jump too $1 and execute the relevant code on $2-. It's got little to do with Looping. I believe GOTO looping was used because mIRC never had a dedicated looping function like WHILE.
Using GOTO jumps wisely can be far better and faster coding than a bunch of IF-ELSE checking. However, Using GOTO jumps for loops when we have a WHILE statement doesn't make much sense.