How to restrict column creation for existing tables?
The way to prevent table modification is to change the ownership to a different role.  Tables can be altered only by the owner and superusers - so change the ownership to a non-superuser.  I find it practical to keep a database ownership role for solely this reason (which might make life easier elsewhere, too, like for example when setting default privileges).