I agree. I don't use goto often in mirc but there are cases where goto does the job in the best possible way (at least for me). The most striking example is using it as another way of switch (in absense of the latter):
var %a = $1
goto %a
:foo | return 1
:bar | return 2
:%a | return Unknown
I've used goto in a couple of other cases too (but not for looping). Another example would be to break out of nested loops. Only goto can do that at once.
As for arguments of the type "goto makes spaghetti code", that's the programmer's fault. If a programmer doesn't realise he's making spaghetti code, he's hopeless. I don't think any language should remove tools that others might find useful in some cases just because some people would use them in a 'bad' way.