Vamos tornar isso um pouco mais simples. Você deseja substituir cada ocorrência de a por '$b' (um dólar, um b entre aspas simples). c , a que a variável $b acontece se expande, não é o que você deseja.
b=c
sed -i "s/a/'$b'/g" *.php
O comando acima é semelhante ao que você está fazendo no seu problema. Como a string s/a/'$b'/g está entre aspas duplas, as variáveis são expandidas e a string de substituição é 'c' .
Se todo o comando sed estiver entre aspas duplas, você precisará sair de $ . Esta é uma solução:
sed -i "s/a/'\$b'/g" *.php\
Outra possibilidade é não citar nada, exceto para qualquer caracter que tenha um significado especial para o shell (não recomendado, mas pode ser perspicaz):
sed -i s/a/\'\$b\'/g *.php