Если Вас смущает именно момент "в других модулях реализуем, но не экспортируем", то это всего лишь синтаксическая условность.

Понятно, что процедура, реализовавшая абстрактную, фактически экспортирована (будет доступна для вызова через виртуализацию).
И в ББ можно, кстати, спокойно поставить значок экспорта - вообще у любой процедуры даже неэкспортированного типа. Это ни на что не влияет.

Тут вопрос, на который я не готов ответить (некогда было уточнять) - эта возможность однозначно следует из описания языка или это неточность описания языка (соответственно, в другой реализации, нежели ББ, могут понять по-другому и не разрешить; хотя авторы КП - именно разработчики ББ, так что ББ можно рассматривать как отражение именно их понимания во всех не до конца понятных из описания местах).

Практический смысл от возможности поставить значок экспорта у процедуры неэкспортированного типа... Да никакого особо. Разве что чтобы подчеркнуть, что эта процедура - реализация абстрактной и на самом деле доступна для вызова извне.

У Вас, вроде, всё нормально. Архитектурно смущает открытость поля r (т.е. данные доступны кому угодно не через методы), но для каких-нибудь конкретных вычислительных задач, где не хочется громоздить и терять производительность на оборачивании всех-всех данных в методы, можно и так.