Edit2:Coping with my habit of missing subtleties I have tried again to correct it further.
Block[{a = Hold@{2 + 2}, b = Hold@{4 + 4},
l}, {l = HoldForm[Hold[{ {s}, {d}}]] /. {s -> a /. Hold -> Defer,
d -> b /. Hold -> Defer}; Length[l]}
Table[l[[i]] /. List -> Sequence, {i, 1, Length[l]}] /.
HoldPattern[Hold[x___]] :> Hold[{x}]
{Hold[{Sequence[2+2],Sequence[4+4]}]}
To check with @Mr.Wizard's test case of unequal lists, I am getting following output.
Block[{a = Hold@{2 + 2, 1 + 1}, b = Hold@{4 + 4},
l}, {l = HoldForm[Hold[{{s}, {d}}]] /. {s -> a /. Hold -> Defer,
d -> b /. Hold -> Defer}; Length[l]} Table[
l[[i]] /. List -> Sequence, {i, 1, Length[l]}] /.
HoldPattern[Hold[x___]] :> Hold[{x}]]
{Hold[{Sequence[2 + 2, 1 + 1], Sequence[4 + 4]}]}
ReleaseHold gives {4,2,8}.
Thread[Join[a, b]] /. {Hold[x___]} :> Hold[{x}]. – Leonid Shifrin Sep 11 '13 at 15:30aandbare not the same length. Or perhaps that's why you didn't post this as an answer. – Mr.Wizard Sep 11 '13 at 18:04