How is a 2-bit predictor better than a 1-bit predictor at determining loop iterations
The assumption is that destructive aliasing (or really any aliasing) is rare. That is, the branch predictor entry is unique to that static branch or at least not shared with another branch that is generally not taken.

If there is no aliasing, a later encounter of the loop will still predict taken for the 2-bit predictor but will mispredict for the 1-bit predictor. (A 1-bit predictor will also lack constructive aliasing with other loops since the previous encounter with the other loop will set the predictor entry to not-taken.)

(The common technique of BTB filtering "never" taken branches (i.e., a BTB miss for a branch that is not taken does not update the predictor and behaves as if no branch was present) can reduce destructive aliasing for taken branches.)

For loop dominated workloads a loop branch is both less likely to alias (fewer static branch instructions, one static branch accounts for multiple dynamic branches) and less likely to have destructively aliasing (constructive aliasing with other loop branches is more likely).

If aliasing were common, branch prediction would not work well because the prediction would not apply to the branch being predicted. (A 1-bit predictor can reduce aliasing by providing twice the number of entries compared to a 2-bit predictor of the same storage capacity. For certain workloads with high static branch count, the tradeoff of number of entries/aliasing and hysteresis may be justified.)