Are there any downsides to referencing tables from another schema using synonyms?
There is no performance issue in having an app access tables from multiple schemas.  You are correct in that you do not want to duplicate data across multiple schemas.  As for managing the privileges, grant the privs to a role, not the individual user.  Then grant the role to the user(s).  When new objects are created, grant the appropriate privs to the role, and any user to which the role was previously granted will pick up the new privs in any future sessions they create.