Вообще-то, это "таблица переменных" существует только в проекте на компьютере. Очень удивлюсь, если она как-то (статически) живёт в конечном коде программы контроллера. Не должна эта таблица жрать память (контроллера) сама по себе. А экономить память в проекте...
Т.е., смотрите. При наличии в проекте "именованных цепей" в проекте наверняка есть "таблица цепей", в дополнении к "таблице пользовательских переменных". Разница - только в названии, т.к. в конечном коде не будет ни "цепей", ни "пользовательских переменных"
Я думаю, что "переменные" в проекте ОЛ никак не являются "переменными, используемыми в контроллере". Любой "промежуточный результат" - это "переменная", не важно как она называется в проекте - "именованное соединение" или "переменная". Так что, насчёт оптимизации памяти МК, и то, и другое - абсолютно равнозначно. Если, конечно, не использовать энергонезависимые или сетевые переменные, которые, действительно, занимают физическую память в конкретной физической области.

Кто Вам такое сказал?
Я ж и пишу о том, что выделять память под "пользовательские переменные" просто "чохом" было бы, мягко говоря, не оптимально. Эти "переменные" внутри в "глобальном" виде нужны ровно так же, как "глобальная переменная" на каждую связь из Вашей схемы.
"Пользовательские переменные" - это ТОЧНО ТАКАЯ ЖЕ таблица, как "таблица цепей". "Оптимизация" таблицы пользовательских переменных в общем случае никак не относится к оптимизации кода для контроллера. Эти переменные всёравно никак и нигде, кроме как в самой программе недоступны.
Так есть такая возможность. Через "переменные". Просто, таблица "именованных цепей" совмещена с таблицей "пользовательских переменных". Названия разные, а суть одна.

Так, похоже необходимо провести ликбез

Существует два вида переменных, глобальные и временные. Для глобальных (которыми и являются пользовательские переменные) место в ОЗУ отводится при компиляции программы, и оно заранее занято (под них в ОЛ отводится 32 килобайта, можете посмотреть в статусной строке программы). Для временных переменных существует так называемая "куча" - какой то объём памяти в ОЗУ. Во время выполнения программы при необходимости из этой кучи берется место под временную переменную. Одна и та же временная переменная (собственно говоря адрес в ОЗУ, и размер выделенной памяти) может использоваться в программе насколько раз, в совершенно разных операциях. Это необходимо для оптимизации использования памяти. После выполнения необходимых операций эта память возвращается в "кучу". То есть значения в этих переменных не сохраняются между циклами выполнения программы (официально цикл программы называется сканом программы). Соединения могут использовать как раз временные переменные, а глобальные используются для хранения значений между циклами программы и не могут быть переиспользованы.