Ответ
Нет, val гарантирует только неизменяемость ссылки (нельзя переназначить), но не самого значения. Если объект изменяемый (MutableList, var-поля в классе), его содержимое можно менять.
Пример:
val list = mutableListOf(1, 2, 3)
list.add(4) // ОК: list теперь [1, 2, 3, 4]
// list = mutableListOf() // Ошибка: val нельзя переназначить
Для полной неизменяемости используйте неизменяемые типы (List, data class с val-полями).