По моему, очевидно что если кто-то хочет менять переменную, то на входе у него будет VAR-параметр (или не const, если у нас плюсцы), а если не хочет, то будет VAL. Не вижу проблем тащемто :-)
Это не всегда очевидно. Сегодня у компоненты нет VAR, а завтра появился... и хорошо, если компиялтор про это скажет. Кроме того, VAR очень захочется поставить, если его отсутствие подразумевает копирование строки (массива) - типа оптимизация. А в случае изменяемых строк именно копирование и будет подразумеваться

В плюсах тоже самое - сегодня там const ссылка, завтра - не-const. Компилятор поймает, но не во всех ситуациях. И даже если там всегда const - это все равно ничего не гарантирует. Строка может придти по const ссылке, но это вовсе не означает константности самой строки - ее может поменять кто-то другой для кого она не-const. Я уже не говорю про const_cast<>...
Короче, изменяемые строки - однозначное зло.