Например,
1. Нужно получить всех детей для заданного узла, включая вложненные.
2. Нужно получить всех родителей для заданного узла.
и так далее. Эти операции осуществляются за один SQL-запрос по проиндексированным значениям левого и правого чисел.
А при использовании рекурсии будет по одному SQL-запросу на каждой итерации.А кеширование всегда должно быть к месту: не всегда полезно хранить узлы дерева в кеше, если обращение к этим узлам нечастое. Или, например, кол-во узлов дерева очень большое, и хранить все дерево в кеше невозможно. Для каких-то задач правильнее будет хранить в кеше не узлы дерева (id, parentId), а их содержимое. При оптимальной мощности кеша и при частом обращении к одному и тому же содержимому узлов это будет полезно.