Dartmouth BASIC seems to have gotten strings around 1968, and BASIC uses the
$ on variable names to indicate that they're strings. This is a strategy for avoiding the need for explicit type declarations. I imagine that type declarations would have been considered an unwanted barrier to user-friendliness, and they would have also been a a poor fit because the language lacked any syntax at levels broader than the level of one statement (no begin-end, etc.). (Most implementations after Dartmouth BASIC were pure statement-by-statement interpreters.)
The first Unix shell came out in 1971. The Bourne shell uses a similar (but prefixed)
$ syntax, although it has more to do with dereferencing and string interpolation. Perl, which is basically shell on steroids, uses the sigils
% in a manner similar to Dartmouth BASIC's, as an alternative to explicit typing (although the distinction being made is a different one, and they are also used for string interpolation).
Was the use of sigils as an alternative to type declarations an innovation of Dartmouth BASIC, or was it present in some earlier system such as the Multics shell (which I believe inspired the Bourne shell)?