The code is completely Dispatcher-agnostic. You could supply any number of interesting (or boring) dispatch functions as the argument to the returned function. We have some similar functions in our React/Redux stack.
It's not a dispatcher or dispatch component in its own right.
An equally good argument to normalize or flatten nested data is when it comes to updating this data. This is well explained here. Because this is a common use-case, Dan Abramov created normalizr, later re-written and now maintained by Paul Armstrong.
But if you also control the API, and you probably store the data in normalized form in the database, it's ...