Given a value, withInitialState creates a reducer which provides that value as the initial state - that is, the reducer returns the value if called with the state undefined.
If a subReducer is passed, the reducer will delegate to it once the state has been initialized. Used this way, withInitialState basically converts a sub-reducer that doesn't provide an initial state into a proper reducer that does.
Without subReducer, the reducer will simply return any non-undefined state it receives. This means it will not make any state changes after the initial state has been provided. This form of withInitialState is meant to be used as building block for reducer chains built with chainReducers.