Существует жесткий верхний предел размеров объектов .NET, они не могут превышать 2 гигабайта. Даже в 64-битной операционной системе. Ваш массив намного превышает этот размер.
В 32-разрядной операционной системе вы никогда не приблизитесь к этому пределу, самый большой кусок непрерывной доступной виртуальной памяти составляет около 650 мегабайт. Только при запуске это быстро идет вниз по склону. Это побочный эффект фрагментации адресного пространства, вызванный сочетанием кода и куч в адресном пространстве. Общий объем памяти, который вы можете выделить, близок к 2 гигабайтам, если размер каждого выделения достаточно мал. Не то, к чему вы когда-либо хотели бы приблизиться, случайный сбой программы из-за OOM трудно справиться.