В Вашем случае (EXTENSIBLE RECORD с наличием EXTENSIBLE методов) нужно избегать потенциальных проблем наследования реализации (хрупкий базовый класс и проч). Применение ABSTRACT эти проблемы снимает.

Но ABSTRACT добавляют проблему повторного использования кода, когда в каждом производном объекте приходится частично дублировать код реализации. Что приводит к необходимости рефакторинга.

Для повторного использования кода лучше применять методы с измененными именами, а не EXTENSIBLE. Но есть ситуация, когда EXTENSIBLE вполне допустимо - когда Вы с этими проблемами управляетесь в одном модуле Module2:
ABSTRACT Module1.Rec  ->  EXTENSIBLE Module2.Rec  ->  Module2.RecSpec1, Module2.SpecRec2, ..
При этом Вы должны выводить наружу только Module1.Rec