Именно так. Я сделал несколько тестов на XDS и BlackBox и у меня сложилась вот такая непротиворечивая картина:

Проверка типа по типу записей осуществляется только в процедуре при передаче записей с идентификатором VAR (или IN для Компонентного Паскаля). Проверка типа по указателю может осуществляться в теле программы без организации процедуры. Локальный охранник (оператор WITH) осуществляет проверку соответствия записи или указателя их статическому типу, зафиксированному при объявлении этих переменных в разделе VAR программы, модуля или процедуры. Проверка типа (оператор IS) осуществляет проверку соответствия записи или указателя их текущему типу, при этом образуя их динамический тип, заменяющий на момент выполнения программы их статический тип, зафиксированный при объявлении этих переменных в разделе VAR программы, модуля или процедуры. Поэтому сначала необходимо с помощью оператора IS проверить текущий тип записи или указателя, а затем с помощью оператора WITH обеспечить доступ к тем полям записи, которые соответствуют её текущему типу.

Спасибо разработчикам XDS за подсказки во время компиляции.