The 'final' keyword should be used sparingly. While it makes sense to advocate the use of TransformedList over extending BasicEventList in most cases, it's also sometimes just overkill, and leads to bloat where it is not necessary.
In my use case, I would like to have my model implement another interface. Since my model is just a BasicEventList, I now have to implement TransformedList just because of that.
Another use case is debugging. Using the DebugList is nice, but it's very limited depending on the issue you want to investigate, and when you need your own, you'll have to implement a lot of code just because BasicEvenList is final. DebugList itself is also a good showcase of why making BasicEventList final is not that a good idea.