Where are the RETURN TABLE columns in the information schema?
Your query seems correct, so I'm not really sure what your question is? I created a function like:

CREATE OR REPLACE FUNCTION twice (x int) 
   RETURNS TABLE (y int, z text) 
AS $$
BEGIN 
    RETURN QUERY 
    SELECT x, 'a' UNION ALL SELECT x, 'a' ;
END; $$
LANGUAGE 'plpgsql';


and asked the catalog for:

SELECT r.routine_name, p.parameter_mode, p.parameter_name, p.data_type 
FROM information_schema.routines r 
LEFT JOIN information_schema.parameters AS p 
    ON r.specific_name = p.specific_name 
WHERE r.routine_name = 'twice';

routine_name    parameter_mode  parameter_name  data_type
twice           IN              x               integer
twice           OUT             y               integer
twice           OUT             z               text


Is it something that I did miss in your question?