Much of this seems to be caused by the fact that there was no support for SCRAM-SHA-1 authentication in Perl. I've started work to add exactly that: https://metacpan.org/release/EHUELS/Authen-SASL-SCRAM-0.01-TRIAL
Just installing this library on my server allowed me to authenticate against my own ejabberd server using SCRAM-SHA-512. Before, I could only authenticate against my server when the PLAIN authentication was also enabled. I'll be filing an RFP bug when the package publishes on CPAN and a wishlist bug against sendxmpp to add this library as a dependency.