list = {5, 10, 3, 8, 9, 8, 8, 4, 1, 7}; Using SequenceReplace:
SequenceReplace[list, {a__} /; Total[{a}] <= 20 :> {a}] {{5, 10, 3}, {8, 9}, {8, 8, 4}, {1, 7}}
The sister version of SequenceCases, which is also not fast for large lists, but is short and clear.