Multidimensional arrays are constructed as "arrays of arrays". So, when you have int myArr = new int;, "myArr", is a one dimensional array, but each element is itself an array. So, it seems like myArr is two dimensional.
Because myArr is just an array, it behaves the same as any array - each element must be of the correct type. This means you can assign any int to an element of myArr. Eg, you could do "myArr = new int;". Assignment between array types, as you point out, doesn't do any length checking.
The initialisation code "new int" creates an initial 'matrix' of size 2x2, but there is no restriction that myArr must always reference a 'matrix' of this size.