Tuve un problema similar y probé todas las configuraciones que pude encontrar en la web, en vano.
En mi caso el problema era la propia configuración de FreeTDS. En Linux, el archivo es /etc/freetds/freetds.conf
Tuve que cambiar la versión a 7.0 (tal vez otros números también funcionen. Acabo de probar 7.0)
[global]
# TDS protocol version
tds version = 7.0
Después de esto, el conductor pareció aceptar cambios en el juego de caracteres.
ini_set('mssql.charset', 'UTF-8');
Por cierto:el cambio entra en vigor de inmediato, no es necesario reiniciar nada después