Модификатор
final
в Java не защищает сам список от изменения. Это просто говорит о том, что ссылка никогда не будет указывать на другой объект, но указанный объект может измениться.
Неизменяемый список - это нечто иное. Сам неизменный список не может изменить его содержимое, но вы можете указать ссылку на такой список на другой, если он не является окончательным.
Так что может иметь смысл иметь окончательный неизменный список. Я бы всегда использовал неизменяемый список, когда вам не нужен изменяемый список.
Как сказал один из главных разработчиков guava: «Вам не следует спрашивать, нужен ли вам неизменный список. Вам лучше спросить, нужен ли он для изменчивости». Не знаю точных слов ... он сказал это в канале разработчиков Google на YouTube.