Итак, давайте разберём что такое CollapseGraph, Macro и Function, в чём разница, и какой способ где лучше применять. Не буду писать, как они создаются и упоминать, что все они имеют возможность создания входного и выходного блока с добавлением параметров/переменных.
Кстати, в макросах можно создавать локальные переменные, однако это выглядит сильно иначе, чем в функциях. Там есть специальные ноды, которые и хранят состояние. Посмотреть, как это сделано можно например в реализации движкового макроса ForEach
Было бы очень здорово, если бы для начала вы бы ответили на вопрос ПОЧЕМУ между этими тремя вариантами такая разница. Это сразу вызвало исследование технической подоплёки вопроса, и ответило на главное - когда стоит, а когда не стоит использовать тот или иной вариант ;)
А в варианте "возможности/ограничение" это выглядит несколько по-дилетантски.
Collapsed Graph - чисто косметическая фича, а смысл макросов и функций ровно такой же, как в C++, с аналогичным применением.
А вы в курсе ПОЧЕМУ?