The thing here is:
PUBLIC is a special schema that can be used by all users and that is always part of the search strategy for identifiers without explicit schema.
That way, any user can simply run e.g.
select * from tables
instead of having to put the schema name before the table/view_name.
When you want to use the system views/tables, make sure to not include the schema name.
The public synonyms are the official access interface for the system views.
- Lars