I'm going to throw in my own two cents.
Goto-Lbl statements are only good when no workable alternative exists. (e.g. subroutines or loops don't exist in the language) For example, While loops in Applesoft BASIC have to be created by IF x THEN GOTO y statements at the end of the loop. Fortunately, this does not create a memory leak, unless you happen to be inside a For loop.
As for TI-BASIC, While loops and If statements can create the effect of a subroutine, but that solution is only for people who want to keep all their code in one program. My game DIE FIEND used this Goto pattern to create subroutines and program branching, but I realized how leaky that code was.
Another alternative is to store your game in multiple subprograms, use an ASM lib to unarchive them (or tell people not to) then ship the game as a group file. That's what I did with Morale, my xLib war game.
And, in Axe, there is virtually no reason for Goto statements at all.