I did some speed comparisons on the different solutions
murta[l1_, l2_] := Flatten[MapThread[ Function[{a, b}, Join[a, #] & /@ b][#1, #2] &, {l1, l2}], 1]; rojo[l1_, l2_] := MapThread[Flatten /@ Tuples[{{#1}, #2}] &, {l1, l2}]~Flatten~1; jm[l1_, l2_] := Flatten[MapThread[ Join[ConstantArray[#1, Length[#2]], #2, 2] &, {l1, l2}], 1]; rmrf[l1_, l2_] := (Outer[Flatten[{##}] &, {#1}, #2, 1] & @@@ Thread[{l1, l2}])~Flatten~2; mike[l1_, l2_] := DeleteCases[Flatten[Join[{#, #, #} & /@ l1, l2, 3], 1], {_, _}]; istván1[l1_, l2_] := Flatten[Thread[f[l1, l2]] /. f[a_, b_] :> (Join[a, #] & /@ b), 1]; istván2[l1_, l2_] := Flatten[MapThread[ PadLeft[#1, {Length@#1, 5}, #2] &, {l2, Reverse /@ l1}], 1]; imagedr[l1_, l2_] := Flatten[Thread[ Join @@ {#[[1]], #[[2]]\[Transpose]}] & /@ ({l1, l2}\[Transpose]), 1]; kguler1[l1_, l2_] := Join @@@ Join @@ (Thread[#, List, {2}] & /@ Thread@{l1, l2}); kguler2[l1_, l2_] := Join @@@ Join @@ (Thread[{##}, List, {2}] & @@@ Thread@{l1, l2}); kguler3[l1_, l2_] := Join @@ (ArrayPad[#[[1]], {{0}, {2, 0}}, #[[2]]] & /@ Thread[{l2, Reverse /@ l1}]); kguler4[l1_, l2_] := Join @@ MapThread[ ArrayPad[#1, {{0}, {2, 0}}, #2] &, {l2, Reverse /@ l1}]; kguler5[l1_, l2_] := Join @@ MapThread[Function[{a, b}, Join[a, #] & /@ b], {l1, l2}]; kguler6[l1_, l2_] := Join @@ MapThread[Function[e, Join[#1, e]] /@ #2 &, {l1, l2}]; mthds = {murta, rojo, jm, rmrf, mike, istván1, istván2, imagedr, kguler1, kguler2, kguler3, kguler4, kguler5, kguler6}; testSpeed[n_, m_] := Module[{l1, l2}, l1 = RandomReal[{0, 1}, {n, 2}]; l2 = Table[RandomReal[{0, 1}, {RandomInteger[{1, m}], 3}], {n}]; Sort[Map[ {ToString[#], First[AbsoluteTiming[#[l1, l2]]]} &, mthds], Last[#1] < Last[#2] &] // TableForm ]
First test, both lists length 5000, second one has at most 5 lists to append:
testSpeed[5000, 5] kguler4 0.035028 mike 0.040346 istván2 0.042375 jm 0.044726 kguler3 0.044926 istván1 0.054379 kguler5 0.059240 kguler1 0.060311 kguler2 0.062870 murta 0.065296 kguler6 0.065683 imagedr 0.080554 rmrf 0.102988 rojo 0.116306
With up to 50 sublists:
testSpeed[5000, 50] kguler4 0.051828 kguler3 0.059161 jm 0.100330 istván2 0.102177 imagedr 0.139533 mike 0.188815 istván1 0.268590 kguler5 0.270507 murta 0.285236 kguler6 0.343441 kguler2 0.365733 kguler1 0.367342 rojo 0.595591 rmrf 0.684573
So I'd go with kgulers solution:
Join @@ MapThread[ ArrayPad[#1, {{0}, {2, 0}}, #2] &, {l2, Reverse /@ l1}]