You can not use the excuse of the backward compatibility twice.
If the string template is prefixed by a processor STR."foo" instead of "foo" then you do not need \{variable} instead of $variable.
If the string template is prefixed by a processor STR."foo" instead of "foo" then you do not need \{variable} instead of $variable.
Much easier to accidentally write something that boils down to
"\{bobby}"
where it should have been SQL."\{bobby}"
than STR."\{bobby}"
instead of SQL."\{bobby}"
(i admit that this argument would work better if STR was typographically more different from the name you'd inevitably use for an SQL statement processor)And editors will use different colors.
Using \ or $ is not about backward compatibility but about ergonomics.