По сути, ваше решение настолько хорошо, насколько вы можете.Вы можете сделать то же самое с LINQ:
int[][] result =
s.Split(' ')
.Select((a, index) => new {index, value = int.Parse(a)})
.GroupBy(tuple => tuple.index / 3)
.Select(g => g.Select(tuple => tuple.value).ToArray())
.ToArray();
Для этой проблемы решение LINQ, вероятно, хуже, чем обычное решение;однако эта идея может быть полезна для подобных проблем.