Roles are invalidated inside PL/SQL. The owner of the procedure or trigger has to have appropriate privileges granted explicitely, not through roles. In your case,

GRANT CREATE USER TO owner_of_the_trigger;
and
GRANT GRANT ANY ROLE TO owner_of_the_trigger;

HTH,