I like this question. Your problem comes down to picking all ordered combination of 3 integers between 1 and 10. Those combination gives you where to split your original vector.
You just need to write a function to split a vector based of a position vector. And they apply this function to all possible position vectors.
x=1:5
n.group=3
splitAt <- function(x, pos) unname(split(x, cumsum(seq_along(x) %in% pos)))
apply(combn(length(x),n.group),2,function(pos) splitAt(x,pos))
The output is a list
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3 4 5
[[2]]
[[2]][[1]]
[1] 1
[[2]][[2]]
[1] 2 3
[[2]][[3]]
[1] 4 5
...
[[10]]
[[10]][[1]]
[1] 1 2
[[10]][[2]]
[1] 3
[[10]][[3]]
[1] 4
[[10]][[4]]
[1] 5