Полностью зависит от контекста. Здесь нет правильного ответа.
Можно выделить 2 случая:
1. Код полностью твой
2. Код будут использовать другие пользователи
Если случай 1, то делай как хочешь. Здесь ты главный и знаешь что менять можно, а что нет
Если случай 2, то тут уже зависит:
- Если возвращаешь объект, который может (и должен) быть изменен - делай изменяемым
- Если это слепок состояния - то можно подумать над неизменяемым состоянием
- Можно прописать это (то что нельзя изменять объект) в документации к методу геттера
Дополнительно, если тебе так уж нужна неизменяемость, то добавляй интерфейсы. Возвращай какой-нибудь интерфейс с одними геттерами.