gpg(1) says about --assert-pubkey-algo:
With this option gpg (and also gpgv) is guaranteed to return with an exit code of 0 if and only if all valid signatures on data are made using a matching algorithm from the given list.
but this appears to be incompatible with the description of the return code logic for gpgv(1):
The program returns 0 if everything is fine, 1 if at least one signature was bad, and other error codes for fatal errors.
In particular, if an *invalid* signature on data is present, but all valid signatures satisfy --assert-pubkey-algo, then gpg(1) says it should return 0 but gpgv(1) says that it should return 1.
Realistically, the behavior most consumers will be looking for isn't either documented behavior. Most consumers want to know whether *at least one* valid signature meeting the cryptographic bar provided by --assert-pubkey-algo exists, regardless of what other garbage happens to sit alongside that valid, strong signature.