Hallo Martinius,
dass im ersten Fall ein Byte und im zweiten ein String übergeben wird, hast du wahrscheinlich bemerkt.
Ein zusätzlicher Unterschied ist, dass das Byte als Wert übergeben wird, während der String nur referenziert wird. Während vom Byte praktisch eine Kopie in einem speziellen Speicherbereich (Frame) erstellt wird, wird vom String nur die Speicheradresse des ersten Zeichens im Stack abgelegt.
Das macht man bei Strings häufig, weil sonst der ganze String kopiert werden müsste, was zum Einen Zeit, zum Anderen auch doppelt soviel Speicher braucht.
Da der String nun als Original verwendet wird, kannst du ihn in der SUB oder FUNCTION tatsächlich auch ändern. Bei dem Byte änderst du nur die Kopie.