A variant using `Take`.

 Take[list, #] & /@ Range@Length@list

>{{a}, {a, b}, {a, b, c}, {a, b, c, d}}

One using `NestList`:

 NestList[Most, list, Length@list - 1]

>{{a, b, c, d}, {a, b, c}, {a, b}, {a}}