I've had a bit more time to think about this now, and I think I understand better what is going on.
First, it's pretty obvious why this isn't a problem for programs other than Emacs: they ignore the error messages.
I think Enchant is correct to generate the errors, as it shows that it has been mis-installed. I looked at the Arch package, and it depends on libvoikko, so I'm surprised you're getting these errors in the first place.
However, I think Emacs should be able (like other Enchant-using programs) to cope with this problem, particularly as all it should have to do is ignore stderr.
I think this can be achieved by changing the definition of ispell--call-enchant-lsmod to:
(defun ispell--call-enchant-lsmod (&rest args)
"Call enchant-lsmod with ARGS and return the output as string."
(with-output-to-string
(apply #'ispell-call-process
(replace-regexp-in-string "enchant\\(-[0-9]\\)?\\'"
"enchant-lsmod\\1"
ispell-program-name)
nil '(t nil) nil args)))