Is there something wrong with that or is it just binary purism?
Here’s my bet.
GH needs to clone the data in each parameter to separate the instances or break the references with the previous state, that is, if the current component modifies the data, the previous component will not see the data changed (which would happen if it was the same reference, the same memory). This allows to work with the data sequence instead of the last state of the data. And to clone a class, it has to be able to be constructed, interfaces or abstract classes cannot.
On the other hand, System.Linq methods are not appropriate for a system like this because it is based on promises of operations instead of instantaneous operations. When you do, for example:
IEnumerable revFirstFive = myEnum.Take(0, 5).Reverse();
you are not saying give me the first five elements and reverse the order, what you are really saying is, when the collection is iterated, as in a loop, when it is called, when the data is to be read, give me the first five elements and reverse the order. You postpone the operations for when they are necessary, if you don’t read the collection they will never be carried out (I’m not 100% sure of this, but it have sense to me bc several times I fix weird bugs of things doesn’t happen just calling .ToArray() or .ToList(), then they do). Then in a system where you have to synchronize several lists, and even worst, lists of lists (datatree), this opens the door to a lot of not very obvious failures. When you call ElementAt() or Count() methods, all those operations (take and reverse in our example) are performed to give you the expected answer, but they are not fields of the object as it happens in List< T> or T array, because they are extension methods. In fact, if I am right, if you call ElementAt(i) in a loop, what you are doing is starting the internal iterator from 0 until i at each step of the loop, so it is not good practice.
I think this is enough to justify the sacrifice, it just doesn’t compensate for adding this complexity to the system for the little you earn. Why complicate it by figuring out what’s coming if you can restrict a collection that is good for almost every situation.