Role, whose name doesn't match database name, can't access the database
As it sounds, the tables (not necessary the database) is owned by the app user.  This is what the documentation tells about this:


  If the "Access privileges" column is empty for a given object, it means the object has default privileges (that is, its privileges column is null). Default privileges always include all privileges for the owner, and can include some privileges for PUBLIC depending on the object type, as explained above.


As nothing is displayed under "Access privileges" in the \dp output, and the app user can read from and write to the table, it is clear that it's the owner.  One can prove this, for example, by issuing \dt access_users, which should return something like

        List of relations
 Schema │ Name         │ Type  │ Owner  
────────┼──────────────┼───────┼───────
 public │ access_users │ table │ app


This also means (not surprisingly), that no other user (except superusers and the members of the app role) has access to the tables.  If you want app2 to have some rights on them (and future tables), an earlier answer of mine might be interesting.