The spark ButtonBar component has a concept of a first button, middle buttons, and a last button built into it, are you able to use that instead of TabBar?
Looking at the documentation it seems that s:ButtonBar and s:TabBar are almost identical - the same super class and no added properties/methods.
The only noticeable difference is the ability to skin separately the first, middle and last buttons.
Other than that, what would be the considerations to choose ButtonBar over TabBar?
They are very similar. As you mention the ability to easily skin for separate first/middle/last buttons is one of the main differences. The other main difference is the default skin's look. The documentation here mentions "The TabBar control is similar to the ButtonBar control, except that is displays a horizontal row of tabs instead of buttons."
If you really wanted to you could custom skin a TabBar by giving the DataGroup an itemRendererFunction to return different renderers for different buttons, but the ButtonBar component makes it slightly easier.