Да, лучше разрешать присваивание только для идентичных типов.

Копирование неидентичных записей всегда можно сделать в виде функции в библиотеке.

Я применяю и CopyRec(IN a: ANYREC; VAR b: ANYREC), и DynCopy(IN x: ANYREC): ANYPTR , и CopySamePart, которая для двух записей находит общий знаменатель (какого-то общего "предка") и копирует его.
Если интересно, можно будет рассмотреть устройство этих функций для КП/ББ в "Системных вопросах".