https://nextjs.org/blog/composable-caching

Lee Robinson выпустил пост о директике 'use cache' с дискасом о том, почему такой API дизайн. В посте разбираются примеры как использовать.

Lee отвечая на вопрос, почему все же директива, а не функция, ссылается на компилятор и замыкания. Т.к кэш обычно работает по ключу, то если кэш будет реализован через функцию, то в замыкание может попасть как ключ, так и данные (аргументы функции) тем самым можно словить отравление кэша.

Директивы use cache достаточно для компилятора некста, чтобы правильно обработать замыкание и сформировать ключи кэша, а если делать это функцией cache() то все это нужно делать руками, что скорей всего приведет к ошибкам.