How to thread over ragged list while skipping empty sub-lists?

Perhaps

ClearAll[f]
f[x_, vals_] := Module[{n = 0}, Replace[x, y_ /; y != {} :> Append[y, vals[[++n]]], {-2}]]

Example:

res = {{{20, 1}, {200, 2}}, {{}}, {{175, 1}}};
vals = {a, b, c};

f[res, vals]

{{{20, 1, a}, {200, 2, b}}, {{}}, {{175, 1, c}}}


Map[Replace[{x_, y_} :> {x, y, RandomReal[]}], res, {2}]

Edit (to make all rvs at once):

res = {{{20, 1}, {200, 2}}, {{}}, {{175, 1}}};
n = 2*Length[res]
rvs = RandomReal[1, n]
i = 1
Map[Replace[{x_, y_} :> {x, y, rvs[[i++]]}], res, {2}]

With[{pos = Position[res, {_Integer, _Integer}]}, 
 ReplacePart[res, 
  Thread[Rule[pos, MapThread[Append, {Extract[res, pos], vals}]]]]]