Они разные потоки и сбрасываются в разное время.
Если вы положите
System.out.flush();
System.err.flush();
внутри своего цикла, он будет работать как ожидалось.
Чтобы уточнить, выходные потоки кэшируются, поэтому вся запись поступает в этот буфер памяти. После периода молчания они фактически выписываются.
Вы пишете два буфера, затем после периода бездействия оба они покраснели (один за другим).