As you say, non-degenerate codes have a lot of well-understood machinery that's brought in from the classical side. That helps us from a conceptual stance, and a mathematical one (making rigorous results easier to prove), although, in terms of practical implementation, doesn't necessarily mean that one is easier to implement than the other.
Errors in a ...
The terms $II$ and $ZZ$ do not uniquely specify the state $|11\rangle$ because you could equally have the state $|00\rangle$. Indeed, you should not include the identity term in your stabilizer. Thus, you need to add a second term, which could be either $-ZI$ or $-IZ$. Either way, you can easily see how to make a product $-ZI$ out of your stabilizers.
Assuming the encoder itself doesn't have to be fault tolerant, you can do the proof constructively.
Prepare the code space by projecting each of the stabilizers into the +1 eigenstate.
For each stabilizer $S$:
If you're in the -1 eigenspace of $S$, apply Pauli gates to flip the stabilizer (but not other stabilizers). E.g. stim can compute ...