Если вы скопируете код, это усложнит обслуживание. В этом примере дополнительный уровень косвенности скрывает параметр next. Это обеспечит функцию только с 2 параметрами вместо 3.
Если код внутри __list_add () скопирован, его необходимо скопировать в несколько мест. Если затем механизм списков будет несколько изменен, все эти места также должны быть обновлены, или ошибки начнут появляться (т.е. реализация списка в FIFO и LIFO показывает различное поведение).
Всегда есть компромисс; другой уровень косвенности также добавляет сложности и, возможно, накладных расходов, в отличие от дублирования строк кода или наличия большого количества параметров в API.