GOSUB〜RETURNは昔からBASICで使われてきた命令ということもあるためプチコン3号に搭載されているのだと思います。
RETURNで元の場所に戻るだけの命令なので最初に覚えることが少なくグローバル変数だけを使用するため小規模なプログラムを作っている初心者には理解しやすい命令だと思います。
この「シンプルな仕組み」こそがGOSUBの最大のメリットだと思います。
とはいえ、私は「プチコン3号自作関数完全マニュアル」という本を作るくらいDEF〜ENDによる自作関数の方が好きなのですが、どういう面が良くてどういう面がダメであり、そのダメなところはこうすれば良くなるというのを説明するのに原稿用紙数100枚分の解説を行っています。
http://petitverse.hosiken.jp/community/petitcom/topic/?read=897その本で解説しているのですが、プチコン3号のDEF〜ENDは初心者泣かせ(経験者でもハマってしまう)仕様がたくさんあります。
そういう面からすると「グローバル変数しか使えないため発生する問題」を除けばGOSUB〜RETURNの方がハマってしまうリスクは減らせると思います。(それにこういちさんも書いているように高速だし)
ハマってしまうリスクなんてDEF〜ENDの仕様を完全に理解すれば防げる問題なのですが、GOSUB〜RETURNを使うことでDEF〜ENDをより活用できる場面もあります。
例えばDEF〜ENDの中から「他のスロットのプログラムで配列変数を宣言して値を書き込みたい」という場合にはGOSUB〜RETURNを有効活用できます。
これはEXECで代用が効く場合もありますが、「他の変数を初期化せずに配列変数を宣言したい」という場合はGOSUB〜RETURNを使わないと実現ができません。
とはいえ、趣味のプログラミングならば自分で作りやすいやり方で作るのが一番だと私は思います。
DEF〜ENDが使いやすいと思うならばそれでいいと思います。
無理にGOSUB〜RETURNを使う必要はありません。
もちろんGOSUB〜RETURNの方が作りやすい場面もあるのですが、「こういう場合にGOSUB〜RETURNを使うべき」とこちらが提示するよりもご自身で「GOSUB〜RETURNを使った方が作りやすいな」と感じた時に使うのが一番ですね。