(I wonder if it'd be practical or useful to emit a warning when granting permissions on an object that already has a grant of the same permissions to PUBLIC. That would at least cue people who don't understand about this behavior that they ought to look more closely.)
We did something similar a while ago where we now warn if you try to revoke a privilege on a role that is actually inherited from PUBLIC and so the revoke on the role doesn't actually do anything. The inverse seems reasonable, and consistent that, at first blush.