static метод - это фактически просто обычная функция. Соответственно, используем везде, где требуется просто коллбэк-функция, без передачи ей состояния. Этим способом не получится вызвать метод конкретного объекта.
А std::function, FastDelegate, и прочие отличаются тем, что позволяют передать состояние (они скрыто передают указатель this), соответственно их можно использовать, если нужно вызвать метод конкретного объекта.
Вывод - везде где есть возможность лучше использовать static методы. В остальных случаях - std::function и аналоги.