Насправді не обов'язково, часто використовую такі кейси
const [state, setState] = useState({
loading: false,
data: []
})
...
setState({ loading: false, data: someDate })
Для того щоб useReducer використовувати логіка запроста, а два окремих стейта будуть призводити до подвійного ререндеру в випадках, коли одначасно треба змінити 2 стейта