В основном когда у нас функция например должна быть динамична от какой то переменной и еще паре специфичных моментов, где то это даже есть на литкод.
Главное понимать разницу в их работе, например, что если это fn Declaration то, ее можно вызвать до объявления и т.п
const fn
fn = foo === bar ? function() { alert(yes) } : function() { alert(no) }