Paginate IEnumerable sequence
Since you mentioned morelinq in your question.  It does have the Batch method which is similar.  It's an IEnumerable&lt;IEnumerable&lt;TSource&gt;&gt; instead of IEnumerable&lt;TSource[]&gt; but if you look at the source code it's actually an IEnumerable of an array but you can't count on that as it's an implementation detail.  

The only issue I see with your implementation is that source.GetEnumerator() returns back IEnumerator&lt;T&gt; which implements IDisposable and should be wrapped in a using statement.