Tiled Neomatrix on different pins - only first defined works

Why not check the size of both matrices? And, get rid of excessive white space at the same time.

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

#define matrixWidth 16
#define matrixHeight  16
#define tilesX  2
#define tilesY  1

Adafruit_NeoMatrix matrix2 =  Adafruit_NeoMatrix(matrixWidth, matrixHeight, tilesX, tilesY, 4,
                              NEO_MATRIX_TOP   + NEO_MATRIX_RIGHT   + NEO_MATRIX_ROWS   + NEO_MATRIX_ZIGZAG +
                              NEO_TILE_TOP + NEO_TILE_RIGHT + NEO_TILE_ROWS,
                              NEO_GRB + NEO_KHZ800);

Adafruit_NeoMatrix matrix1 =  Adafruit_NeoMatrix(matrixWidth, matrixHeight, tilesX, tilesY, 2,
                              NEO_MATRIX_TOP   + NEO_MATRIX_RIGHT   + NEO_MATRIX_ROWS   + NEO_MATRIX_ZIGZAG +
                              NEO_TILE_TOP + NEO_TILE_RIGHT + NEO_TILE_ROWS,
                              NEO_GRB + NEO_KHZ800);

void setup() {
  // Start the serial interface
  Serial.begin(57600);

  uint16_t numLEDs1 = matrix1.numPixels();
  uint16_t numLEDs2 = matrix2.numPixels();
  Serial.print("Number of LEDs Matrix 1: ");
  Serial.println(numLEDs1);
  Serial.print("Number of LEDs Matrix 2: ");
  Serial.println(numLEDs2);

  matrix1.begin();
  matrix1.setTextWrap(false);
  matrix1.setBrightness(5);

  matrix2.begin();
  matrix2.setTextWrap(false);
  matrix2.setBrightness(5);
}

void loop() {
  showTop();
  showBottom();
}

void showTop() {
  matrix1.fillScreen(matrix1.Color(0, 128, 0));
  matrix1.show();
}

void showBottom() {
  matrix2.fillScreen(matrix2.Color(0, 0, 128));
  matrix2.show();
}