Когда использовать Function Declaration, а когда Function Expression?
Нет общих причин использовать тот или иной синтаксис для объявления функций.
В Реакт стрелочные функции используются для того, чтобы в обработчике событий не потерять контекст и не использовать bind. Если к контексту внутри функции не обращаются или нет шанса его потерять - рекомендуется не использовать стрелочные функции. 
Это один из примеров, серебрянной пули нет, руководствуйтесь здравым смыслом и style guide конкретного фреймвока или конкретного проекта.
Согласно style guide от Airbnb:
следует избегать декларированных функций, тк они поднимаются и это вредит читабельности и поддержке.

Function declarations are hoisted, which means that it’s easy - too easy - to reference the function before it is defined in the file. This harms readability and maintainability. 

В остальном плане все как сказал Владимир.