Dictionary<int, string>[] matrix = new Dictionary<int, string>[2];
Выполнение этого выделяет массив «матрица», но словари, которые должны содержаться в этом массиве, никогда не создаются.Вы должны создать объект Dictionary во всех ячейках массива, используя новое ключевое слово.
matrix[0] = new Dictionary<int, string>();
matrix[0].Add(0, "first str");