In the X.509 universe, checking the validity (i.e. trustedness) of a signature happens after building the certificate chain. That's a process where each (at this stage possibly-invalid) certificate's Issuer field is looked up and matched with a certificate the verifier knows about. It's important to note that the issuer is specified by "Distinguished Name" (which usually includes the common name, but can have other fields like organization, company, country, etc.) and not public key -- this is because X.509 is part of the X.500 protocol suite, which was intended to be a sort of global telephone directory type thing, and the public-key stuff was added later. (That it's pretty much the only part that anyone ever used matters little.)
When you're building a cert chain, you take the leaf cert, look up the issuer and add it to the chain, rinse, and repeat. If you can't find the issuer, you fail early -- you're either missing the root or an intermediate cert somewhere. In a self-signed certificate, the issuer's DN being the same as the cert's own DN means you've already added the issuer to the chain, and you can terminate the search.
So it doesn't really have anything to do with needing a self-signature -- you really need a self-issued certificate, and the signature is just a thing you have to do to make it semantically correct.