You can't prevent this behavior. The whole point of PUBLIC is that you have certain things that you want every user to have access to by default.

If you don't want users to see these synonyms, then you must drop them. This will force code/users to fully qualify object names in code/queries or create their own synonyms.