This is what leads me to think that it's potentially a problem in the RDS Postgres internals.
This is unlikely. I suspect that since Boto is intended as an abstraction layer it simply doesn't care about trying to get verbose error details from PostgreSQL and so ignores the SQLSTATE error code. Since the server doesn't put the error code into the error message, as it seems MySQL does by your examples, the code is simply unavailable without code changes to the client database driver.
Sure, PostgreSQL could add a server option to print the SQLSTATE error code as part of the error message. But it doesn't, nor do I suspect that is likely to change.
The server provides the data; complain to the client software developer if they are not making it accessible to you in the way you need when you use their software.