La cadena no es primitiva porque sólo la clase puede tener métodos. La primitiva no puede. Y String necesita muchas funciones para ser llamado mientras se procesa como substring, indexof, equals, touppercase. No hubiera sido posible sin hacer una clase.