Using MapThreadTranspose and InsertReplaceAll as follows:
a = {{1, 2}, {5, 2}, Transpose@{9, 3}a, {6,b[[;; 5}Length@a]]}; b = {x1, x2, x3, x4, x5,/. x6,x_ x7}/; MapThread[Insert[#1, #2, -1] &, {a,VectorQ[x] b[[;;:> Length@a]]}]Splice@x (*{{1, 2, x1}, {5, 2, x2}, {9, 3, x3}, {6, 5, x4}}*) Or using Transpose and ReplaceAllCases as follows:
Transpose@Cases[Transpose@{a#, b[[;; Length@a]]Length@#]]}, /.{x x_: /;{__}, VectorQ[x]y_} :> {Splice@x, y}] &@a (*{{1, 2, x1}, {5, 2, x2}, {9, 3, x3}, {6, 5, x4}}*)