I'm not sure if this function does what you want, but you can capture the SlotSequence
(##) of the outer function using With
lift[g_] := Function[
With[{fs = ##},
Function[
With[{args = ##},
g @@ Map[(#[args]) &, List[fs]]]]]]
Then:
lift[f][a, b][c, d]
-> f[a[c, d], b[c, d]]
Or, more readable:
lift[g_] := Function[
With[{fs = g[##]},
Through[fs[##]] &]]