For granting object privileges also select the owner of the object and run the grant statements from the owners account.
And include grant option (dba_tab_privs) or admin option(dba_role_privs, dba_sys_privs):

select 'GRANT ' || PRIVILEGE || ' ON ' || OWNER ||'.'|| TABLE_NAME ||' TO ROLE1'||
decode(grantable, 'YES', ' WITH GRANT OPTION', null)||';'
from dba_tab_privs where grantee = 'USER2';