Erstmal: "GOTO" hat mit Sub oder Function und "RETURN" nix zu tun.
Dein Fall1 führt also ins Nirwana.

GOSUB Da mußt du bei der aufgerufenen Subroutine immer auch "RETURN" angeben. Das ist sozusagen die Grundvariante, bei der sich der Bascom nicht einmischt. (vergißt du das RETURN, läuft er einfach weiter zum nächsten Statement dahinter, was es auch sei ==> nächstes Nirwana)

Bei Deklarierten SUB's oder fUNCTIONS macht der Bascom automatisch bei "end sub" (oder function) aber auch bei "exit" ein "return" rein.
Sub oder function unterscheiden sich nur insofern, als dass es bei FUNCTION einen Rückgabewert gibt.

Ob du dann
CALL SUB(arg)
oder nur
SUB(arg)
hinschreibst, is egal, da denkt Bascom einfach mit.

Ein paar Details:
https://www.roboternetz.de/wissen/in.../Bascom_Inside