ちょっと考え込んでしまいましたが、
シンプルに、こんな感じではいかがでしょうか?

split([], _, [[]]) :- !.
split([S|R], S, [[]|L]) :- split(R, S, L), !.
split([H|R], S, [[H|H1]|L]) :- split(R, S, [H1|L]), !.