1) Конкретно для ББ данная процедура работает корректно.
- все базовые типы КП расчитаны на нулевое дефолтное значение;
- структура RECORD и ARRAY точно также рассчитана на простое начальное зануление. Именно оно выполняется для области данных модулей.
Обсуждать её корректность вне рамок ББ бессмысленно, т.к. она явно использует Kernel ББ. Очевидно, что никакой ОБЩЕЙ реализации данной процедуры для разных реализаций КП быть не может. Будут специфичные реализации для каждой платформы. Т.е. термин "хак" непонятно, к чему. Процедура написана прозрачно, использует базовые механизмы языка и рантайма.
2) Если говорить о декларации структуры памяти. В конкретной реализации современных языков такая декларация с необходимостью будет, т.к. есть рантайм с рефлексией. Для ББ внутренняя структура задекларирована в типах и операциях Kernel. На Kernel уже давно есть полная документация, которая опубликована на OberonCore (когда-то составлена мной).
3) Если говорить о декларации структуры памяти вообще для всех реализаций. Одно из благих пожеланий, которые никуда не ведут. Унифицируйте структуру памяти, например, между ББ и GPCP. Даже между GPCP-JVM и GPCP-.NET.
(Даже в том, в чём было бы возможно... Детальные и исчерпывающие стандарты всегда идут вдогонку опыту, а не впереди. И ставить в претензию кому-то, что он не высосал их заранее из пальца, чтобы тем же пальцем в небо...)