The browsers don't do it because it violates normal people's expectations of what encryption does. If you are a man-in-the-middle, you provide your own self-signed cert; if the browser accepts self-signed certs, then the user sees an "encrypted" connection, but the encrypted data goes to the man-in-the-middle! Sure, you went through the motions of encryption, but the data is plaintext to the attacker. Self-signed certs could work together with some other kind of infrastructure, something like Perspectives, but leaving everything else as it is, self-signed certs don't provide anything to the normal user.