I know you asked for tidyverse but here's a data.table option
library(data.table)
df = rbindlist(l, idcol = T)
df[, element := 1:.N, by=.(.id)]
df = df[, lapply(names(comb_funcs), \(x) comb_funcs[[x]](get(x))),
by = .(element)][, element := NULL]
setnames(df, new = names(comb_funcs))
df