В чем смысл использовать хуки?
Просто больше возможностей, вы можете строить более гибкие приложение, более точно подстраивать архитектуру, более точно отстреливать себе ногу (голову, печень). 

Ни кто useDispatch тебя не заставляет везде пихать, ты все так же можешь коннектить к редаксу свои контейнеры и радоваться чистой архитектурой.

Как говорится, все в ваших руках. Если приложение очень костыльное, то и классы тут не помогут.
Скажу честно, опыт написания классовых компонентов никогда не имел. Всегда писал только на функциональных и хуками пользуюсь активно. 
Код функциональных компонент куда проще, меньше и понятнее, имхо. Хуки - очень полезные инструмент. Нужно иметь разделять state. Что-то идёт в redux, что-то хранится непосредственно в state самой компоненты. Также всё зависит от подхода к организации структуры в проекте. 
useState, useRef и useEffect - вообще юзаю в каждом проекте, не представляю как без этого трио можно обойтись. Использование остальных уже от задач зависит.

Придется создавать для теста каждого компонента обертку из провайдера?
Да, но давайте не будем о грустном)

Раньше можно было взять компонент, передать props и быть довольным.
А что сейчас мешает?

На демонстрационных примерах все понятно и очевидно - компоненты проще и читабельнее на хуках, но реальные проекты это какое-тоо месиво и фарш
Если грамотная структура проекта, отделена логика, то всё чётко и понятно. Да, обычно, самая большая боль - это структура. Триллион папок с файлами. Но не уже ли на классах в реальных проектах по-другому?