C#; Working code--needs review
I like the formatting, use of white space and tabs.

I'm not sure what THRESHOLD is supposed to represent or where its set, but in the example, I'd make it a const.

I would do the check for 0 right below the assignment:

if (THRESHOLD == 0)
{
    ...

    return;
}


This will un-nest the main logic of your function and catch the error before any processing is done.

The logic should be moved out into their own functions:

var subsets = (channels &lt; 1) ? ProcessWholeList(...) : ProcessPartialList(...);


This will better portray then intention of the logic and remove most of the unimportant variables out of the function cleaning it up quite a bit.

I like that you have created an extension to do the split, not many people think of that.

I would change the bool even ... into a check for odd numbers.  That what you could change the 

if (!even)


to

if (odd)
{
    ....
}


Again, expresses the intent a little better.  I would also either move the assignment to right above the check.

This assignment:

int allocLength = length;
if (!even &amp;&amp; i == totalLength - 1)
    allocLength = arrayIn.Length % length;


Should be changed to:

var allocLength = (!even &amp;&amp; i == totalLength - 1) ? arrayIn.Length % length : length;


There are just a few simple changes that will clean it up quite a bit.  I hope this is a good start and gives you some ideas.

I have another question, is there a reason why you are using a 2 dimensional array rather than one of the build in IEnumerables (i.e. HashTable)?  I think for performance purposes, the two dimensional array would be the slowest way of doing it.