3 of 4 edited body

Haskell, 84 83 bytes

z=zipWith
e=[]:e
f l=foldr1(z$z(+))$scanr(\_->foldr(zipWith(:))e.map reverse)l"abc"

Try it online!

Thanks to totallyhuman for saving 1 byte!