Credit scoring using scorecardpy with XGBoost
It happened to me as well, although I used a logistic regression model not XGBoost.

The problem is not about which model to choose, but rather there is something wrong with woebin_ply function. I didn't read the source code but the woe value I'm getting doesn't match the value for the corresponding bin/input value (You can double check your results as well).

After manually matching input value with bin with corresponding woe value, my scorecard model performs at similar level with my benchmarking models.

Hope this help!