I believe the following works. It generates all$^1$ candidate lists $\beta_i$$\beta'$ such that $\sum_i i\beta_i' \leq d$ and then compares them element-wise to $\beta$.
generateTuples[beta_, d_] := Module[{lst = PadRight[beta, d], candidates}, candidates = Flatten[FrobeniusSolve[Range[d], #] & /@ Range[d], 1]; TakeWhile[#, # > 0 &] & /@ Select[candidates, And @@ Thread[lst <= #] &] /. {a__Integer, 0 ..} :> {a} ] So:
generateTuples[{1}, 3] (* {{1}, {2}, {1, 1}, {3}} *) $^1$ I'm not entireyentirely sure that I'm capturing all the possibilities or that I'm understanding the OP's requirement. The OP should check my assumptions and test this with lots of example lists.
Explanation
The list $\beta$ is assumed to terminate at the last non-zero entry $i_{\mathrm{max}}$. (This can be fixed to chop off trailing zeroes if necessary.) It is then padded with zeros up to length $d$ so that it can be directly compared with the generated candidates. Since a candidate $\beta'$ must satisfy $\sum_i i\beta_i' \leq d$, and $\beta$ consists of non-negative integers, the longest that $\beta$ can be is of length $d$, since $(0,0,\dots,0,\beta_d = 1)$ makes the sum equal to $d$.
We then generate all lists of non-negative integers satisfying the condition $\sum_i i\beta_i' \leq d$ using FrobeniusSolve, compare each of these candidates to $\beta$ element-wise, and keep those that satisfy $\beta_i \leq \beta_i'$.
(The last little bit /. {a__Integer, 0 ..} :> {a} of code chops off the trailing zeroes in each $\beta_i$.)