Тут неплохо описано:
renaud.waldura.com/doc/java/final-keyword.shtml
Я в основном для полей класса пользуюсь. Имхо в этом плане final можно рассматривать как элемент дизайна. Например тип Book имеет неизменные поля title и author. А какой-нибудь объект PaperBook еще и year, pages и publisher.
Если у меня по ходу дела возникает желание изменить final поле, то это говорит, что я могу либо оперировать неверными объектами, либо сам дизайн изначально неверен и требует пересмотра (не просто удаления кейворда final).