NEW is really just a ROW structure so you can turn it into JSON and
dynamically pull out the values however you wish.
CREATE OR REPLACE FUNCTION test_trigger()
RETURNS TRIGGER AS $$
DECLARE
pk_column VARCHAR;
pk_val INT;
BEGIN
pk_column := TG_ARGV[0];
pk_val := row_to_json(NEW)->>pk_column;
INSERT INTO bar (baz) VALUES (pk_val);
RETURN NEW;
END;
$$
LANGUAGE plpgsql;