A solução final é mudar de sed para Perl, que lida com variáveis como cidadãos de primeira classe, não como macros para expandir como o shell.
path=/path/to/scriptdir parameters="para1 para2" perl -i~ -pe \
's|^replace.*$|$ENV{path}/script $ENV{parameters}|g' -- "$filetochange"
-
-p
lê a linha de entrada por linha e imprime cada linha depois de processá-la - o
%ENV
hash contém as variáveis de ambiente, atribuindo a elas no início de um comando as faz exportadas para o comando -
s///
(altere os delimitadores como quiser) funciona de forma semelhante ao sed, veja perlop