For your first Q:
Both are right. They just have +beta or -beta .
All you need is checking the high score group should have lower bad percent.
ln(distr of good/distr of bad) in Siddiqi book, ---> model good_bad(event='bad')=
but some are using just opposite like this: ln(distr of bad/distr of good). ---> model good_bad(event='good')=
For your second Q:
"WOE is ln(distr of bad/distr of good). " should be "model y(event='0')= ".
But you need check if the higher score have the lower bad percent. If not ,then switch into "model y(event='1')= "
"Either way, do we get the same IV value?"
Yes. Both have the same IV .