Например, когда в одну функцию требуется передать аргумент, который есть не значение переменной, но другую функцию, которая будет вызвана из первой. Причём таких вызываемых функций может быть несколько, а вызывающая функция одна. Раньше надо было бы или много раз переписывать один и тот же код, или интерфейсы свои придумывать каждый раз. Теперь достаточно написать одну-единственную функцию и передавать в неё сколько хочешь других функций. Цена такой «простоты» — производительность программы.