es que en el ciclo 1 que corresponde a "i", el tope lo tienes en 7, y en la matriz el maximo es 3:
Private marcianitos(4, 7) As Rectangle '<--- el tamaño de X es 4 que va de 0 a 3, 3 es el maximo
Dim ancho As Integer = 50, alto As Integer = 40
Dim x As Integer = 30, y As Integer = 30
For i = 0 To 3 '<----- Tenias 7
For j = 0 To 6 '<---- el tamaño en Y de la matriz es 7 que va de 0 a 6
marcianitos(i, j) = New Rectangle(x, y, ancho, alto)
x = x + ancho + 5
Next j
y = y + alto + 5
x = 30
Next i
No es necesario poner "step" cuando el incremento es "1"
...
No entiendo a que te refieres con el tamaño
te refieres a poner un indice maximo variable para el "for"?
Siendo asi tendrias que trabajar con matrices dinamicas:
Dim ancho As Integer = 50, alto As Integer = 40
Dim x As Integer = 30, y As Integer = 30
dim marcianitos() As Rectangle '<---- sin tamaño
redim marcianitos(0 to lenX, 0 to lenY) as rectangle '<---Redimensionas la matriz para ajustarla al tamaño
For i = 0 To lenX
For j = 0 To lenY
marcianitos(i, j) = New Rectangle(x, y, ancho, alto)
x = x + ancho + 5
Next j
y = y + alto + 5
x = 30
Next i