Did you see the note in the groupby documentation about how the state of the underlying iterator is shared by the groupby iterator as well as each group iterator?
The size of the sequence on the left has to match that of the right when unpacking. Since the size of an iterator returned by a generator is unknown, the interpreter has to attempt to fetch one more item than the LHS sequence needs to ascertain that the RHS iterator doesn’t have any items left.
Unfortunately with the itertools._grouper being dependent on nonlocal variables tied to the current state of the groupby iterator (please refer to the pure Python equivalent implementation of itertools.groupby), it means that by fetching one more item the _grouper object would lose the value of the last iterator state.