If you look at the c-translated code we output in internal/temp/main.txt, you'll see that the two are completely different beasts.
DIM SHARED F$ --- In the main module, this will translate down to STRING_F, or something similar.
Sub Blah (F$) --- And this will translate down to STRING_BLAH_F, or something similar, which is completely different, and localized to Blah only.
Conclusion: You can't SHARE the same variable as you're passing as a parameter.
On the same note, you can't use STATIC inside a SUB for the same reason.
DIM SHARED Foo
Foo = 1
PRINT Foo
Example
PRINT Foo
SUB Example
STATIC Foo
Foo = 2
PRINT Foo
END SUB
Passing via parameter, or use of STATIC, makes the variable unique to the sub and not the same as one you might be sharing elsewhere.