No, nella seconda il pannello non ha dimensioni piu' grandi della finestra. I componenti che contiene sono piu' grandi della finestra e del pannello stesso, ma tu con setPrefferedSize applicato al pannello, forzi il pannello ad avere quelle dimensioni. Il resto che eccede semplicemente non lo vedi perche' fuori dal pannello.
Io non setterei le dimensioni del pannello ed userei un layout diverso dal FlowLayout.Se say quanti quadratini inserirai e quanti ne vuoi per riga, usa un GridLayout e calcolati il numero di righe.
Soluzione 2)(Tirata giu' in 5 min, non so se funziona correttamente)
Usi questo layout ed oltre all'allineamento gli passi la dimensione che vuoi usare.
codice:
import java.awt.*;

public class MyFlowLayout extends FlowLayout {
    private int fixedWidth;
    
    public MyFlowLayout(int align, int fixedWidth) {
        super(align);
        this.fixedWidth = fixedWidth;
    }
    
    public Dimension preferredLayoutSize(Container target) {
        Dimension d = null;
        int tmpW = 0, tmpH = 0, heigth = 0, nComps = target.getComponentCount();
        for (int i = 0; i < nComps; i++) {
            Component c = target.getComponent(i);
            if (c.isVisible()) {
                d = c.getPreferredSize();
                if(tmpW+d.getWidth()+this.getHgap()<fixedWidth) {
                    tmpW = tmpW + (int)d.getWidth()+this.getHgap();
                    if(d.getHeight()>tmpH) tmpH = (int)d.getHeight();
                } else {
                    tmpW = 0;
                    heigth = heigth+tmpH+this.getVgap();
                    tmpH = 0;
                }
            }
        }
        heigth = heigth+tmpH;
        heigth = heigth+target.getInsets().top+target.getInsets().bottom;
        d = new Dimension(fixedWidth, heigth);
        return d;
    }
}