Un escalar es una constante o variable que contiene un dato atómico y unidimensional.
[1] El término viene heredado del álgebra lineal –véase Escalar (matemática)– y se refiere a un dato atómico y unidimensional, en contraposición al concepto de vector, que se refiere a un dato multidimensional.
Si bien el string se ve como un único valor, no hay que confundirlo con un dato escalar.
Como los arrays en c# (al igual que en varios lenguajes) tienen tamaño fijo, cuando "modificamos" un string en realidad se crea un nuevo array, con la longitud necesaria y se pasa la referencia del nuevo objeto.
Por eso decimos que es inmutable, no cambia, se genera uno nuevo.