Vyxal, 88 3 bytes
λ3|M÷^†;M$R
This is a function submissionTakes [g, [a, b], f]
. If reduction was reversible, then this would be 2 bytes.
Explained
λ3|M÷^†;
λ3| # start a lambda with an arity of 3, taking [g, f, [a, b]]:M$R
M # map f over [a, b] -> [f(a), f(b)]
÷^ # dump [f(a), f(b)] onto the stack and reverse -> [f(b), f(a), g]
† $R # reduce that applyby g to the stack
; # close lambda