Иногда, когда в Java есть интерфейс XYZ и класс AbstractXYZ, класс выполняет довольно много работы и оставляет вам лишь минимум для реализации (например, List и AbstractList). Иногда абстрактный класс просто обеспечивает реализацию бездействия (например, MouseInputListener и MouseInputAdapter).
AbstractBorder - это скорее последний случай; это не очень помогает реализации Border, но предоставляет некоторые вспомогательные методы, которые (AFAICS) более полезны для компонента, «размещающего» границу, чем сама граница.
Итак, я бы сказал, что, вероятно, является немного произвольным, какой из них используется. В любом случае, я бы порекомендовал использовать AbstractBorder, нет никаких оснований этого не делать (если, конечно, вам не нужен производный от другого класса).
@ PeterMmm, почему бы вам не использовать его как часть иерархии? Многие (все?) Стандартные границы Swing происходят от AbstractBorder.