Barbara Allen did NOT break faith with John! She was fucking well raped - because she refused to betray him. How does this even remotely meet the terms of the curse?
Having played John, This Troper and Barbara argued over this one for a while backstage. Our conclusion: because the witches are bitches, why should they care in the first place? They have no reason to play fair, and practically state outright that they're going to cheat. Any loophole they can find will be employed to full effect.
This troper also played in it. It's not the rape that makes her unfaithful - it's when she accepts Jesus. When she says "Oh my Jesus, take my sin away!", she does a complete 180 from her previous stance of "He ain't no witch." It is at this point that she betrays John - which the villagers take advantage of and exacerbate by then handing her over to Marvin, thus sealing the betrayal.