Вот 3 причины:
Универсальность / ремонтопригодность :
Если вы можете заставить свой алгоритм работать, изменяя только указатели, то он всегда будет работать независимо от того, какие данные вы поместили в свой "узел".
Если вы сделаете это путем изменения данных, ваш алгоритм будет объединен с вашей структурой данных и может не сработать, если вы измените свою структуру данных.
Эффективность
Кроме того, вы упомянули эффективность, и вам будет сложно найти более эффективную операцию, чем копирование указателя, который является просто целым числом, обычно уже размером с машинное слово.
Безопасность
И, кроме того, маршрут манипуляции с указателями не вызовет путаницы с другим кодом, который имеет собственные указатели на ваши данные, как указывает @caf.