Maybe it's not enforced by redux itself, but you cannot use react-redux component then. React-redux will only rerender component , if state or part of it is new instance and not just mutated shallow copy, effectively requiring the state to be immutable.
The point of using immutable in this case is to prevent mutating the state by accident as a side-effect of another action.
I know that react-redux will only rerender if things changed through a dispatch (in fact, everything consuming redux.subsrcibe will not notice a side-effect change), but those things happen if you do not use some kind of immutability and especially if they have no immediate effect, it's a nightmare to debug.
Read the article, this is discussed in the first few paragraphs.