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}]