собственно, некоторое ограничение: передавать обрезки массивов можно только в процедуры, которые принимают open array.

rationale: чисто техническая причина. и так пришлось в кодоген впилиться (благо, только в одно место, очень изолировано). проверка в рантайме на то, совпадает ли размер слайса с нужным, всё очень усложнит.

омики для случая `a$` и параметров-массивов фиксированой длины — не поверите — делают временную переменную на стеке точно нужного размера, копируют туда строку, и потом передают временную перменную. я, конечно, тоже так могу, но вот здесь не вижу смысла. потому что один фиг копия делается — так пусть программист её явно руками делает, а не удивляется, кто стек сожрал. вся идея `SLICE()` ровно в том, чтобы избегать копирования, когда оно не нужно, а не добавлять новое.