Related: Do java finals help the compiler create more efficient bytecode?
Also related: Does use of final keyword in Java improve the performance?
The answer to the above questions is "theoretically yes, but in practice probably not" by the way. In this case, I don't think that it would make much of a performance difference (and even if it did, it would probably be a microoptimization at best).
With that said, the main advantage (and this is alluded to in the linked questions as well) is to document and enforce the design intent. Marking something as final
could actually tell you a lot about how a particular item fits into the overall design, and about how you intend to use it later.
It also serves as an enforcement mechanism.
This helps prevent people from accidentally "blowing away" a design decision because they didn't know about it, especially if your class changes, becomes more complicated, etc.
TL;DR While it's not required, it helps to emphasize the fact that it's designed to be immutable.