I had another look at the source code, and found this:
(concat label " a <symbol> or (<symbol or list of symbols> . <symbol or function>)"
" or list of these")
It's unfortunate that this is part of an error message, as I've never seen the error, but I think this explains the syntax, and indeed says that you can't add multiple functions to a single hook with one :hook line; in other words, it would be necessary to write something like:
(use-package foo-mode
:hook
((foo-mode . function-a)
(foo-mode . function-b)))