The PUBLIC role is very messy. How about revoking privs from public for the other objects? All users get the PUBLIC role. Period. If you don't grant privileges to public in the other tables, your new user wouldn't have access to them.

In this case, you may want to create a new role called EVERYBODY. Then grant privs to the role EVERYBODY and then grant EVERYBODY role to everybody except your new user.