The answer is simpler than you think.
.setCustomValidity("")
is not the same as
.setCustomValidity(" ")
I was going completely crazy until I found out that one must explicitly include whitespace for the popup reset to work as expected.