Il JScrollPane funziona in modo corretto. Il problema sta nel fatto che tu setti le dimensioni del pannello contenuto in JScrollPane sia in larghezza che in altezza. Le barre appaiono quindi quando la finestra e' piu' piccola delle dimensioni del pannello. Prova a mettere
codice:
int maxH = (int)mainContent.getMaximumSize().getHeight();
mainContent.setPreferredSize(new java.awt.Dimension(700, maxH));