The privileges required to compile a procedure which executes something in another schema are different to those required just to execute it in an anonymous block, the reason you can execute DBMS_AQ through an anonymous block (DECLARE;BEGIN;END;) is because you have the execute privilege through a role - this is no use for compiling stored programs - see MOS note: Getting ORA-942 or ORA-1031 and PLS-201 or ORA-28111 in PL/SQL, works in SQL*Plus [ID 168168.1]
As the previous user states you need to do a direct grant as SYSDBA to the user who wants to compile the procedure.
conn / as sysdba
grant execute on dbms_aq to <user>;
You must do this as the SYS user otherwise you will get:
ORA-01031: insufficient privileges