Hi shoe54,
The reason why the HorizontalSplitPanel (and other split panels and widgets) are declared as final classes is because when these widgets were first introduced, we wanted to make them very easy to use the right way, and very hard to use the wrong way. Implementing something like a split panel can be tricky, and so subclassing such a class and overriding key methods might have easily led to a broken implementation, and an unhappy developer.
That said, widgets like the split panels seemed to have passed the test of time, and it seems like allowing them as well as other widgets to be subclassed should now be part of The Right Way, while continuing to make it difficult to use or subclass the widgets the wrong way.
Issue #1394 in the Issue Tracker talks about opening up the split panel class or perhaps replacing it with widgets that provide easier access to their inner workings. Feel free to start the issue report to get updates as the team figures out the best way to open it up while leaving it easy to use correctly.
Issue #1394:
Hope that helps,
-Sumit Chandel