useReducer нужен для того, чтобы способы изменения стейта инкапсулировать в одном месте — внутри редьюсера. Описанный вами подход проигрывает в «понимабельности» — вы внутри actionCreator’ов размазываете логику хранилища.
И вот интересная заметка по поводу стора на хуках
https://gist.github.com/XaveScor/99431c573b53b8a0c...