Vous avez besoin du privilège CREATED ANY SYNONYM pour le faire en tant que A, donc
GRANT CREATE ANY SYNONYM TO A;
EDIT :Pour éviter le privilège ANY, procédez comme suit :
a) comme A :
GRANT SELECT ON mytable1 TO B;
GRANT SELECT, INSERT, UPDATE, DELETE ON mytable2 TO B;
b) comme B :
CREATE SYNONYM a_mytable1 FOR A.mytable1;
CREATE SYNONYM a_mytable2 FOR A.mytable2;