Partition on sublists beginning with a certain marker elements
Split[list, (#2 =!= {a}) &]
{ {{a}, {0, 2, 5}, {5, 4, 1}}, {{a}, {1, 1, 0}, {1, 4, 2}, {3, 3, 0}}, {{a}, {3, 2, 0}, {1, 4, 1}} }
If you add Map@Rest
you will get the first form.
Alternatively, for V10.2+
users:
SequenceCases[list, {{a}, Except[{a}] ...}]
or
SequenceCases[list, {{a}, Longest[___]}]
Rest /@ Internal`PartitionRagged[list,
Flatten@Differences@Position[Append[list, {a}], {a}]] // Column
SplitBy[l, FreeQ[{##}, a] &] /. {{a}} :> Sequence[]
Or
Level[Nest[
MapAt[TakeDrop[#, First@FirstPosition[#, {a}]] &,
Level[#, {-3}], -1] &, {l},
Length[Position[l, {a}]]], {-3}] //. {a} | {} -> Sequence[]