Ведите отдельные счётчики для номера строк для колонок 1-2, 3 и 4.
Примерный код на скорую руку:
foreach ($data as $value) {
$sheet->setCellValue($columns[$c++] . $r, $value->getData1());
$sheet->setCellValue($columns[$c++] . $r, $value->getData2());
$originalRowId = $r;
$c = 2;
$c2r = $originalRowId;
foreach ($value->getData3() as $item3) {
$sheet->setCellValue($columns[$c] . $r, $item3);
$c2r++;
}
$c = 3;
$c3r = $originalRowId;
foreach ($value->getData4() as $item4) {
$sheet->setCellValue($columns[$c] . $r, $item4);
$c3r++;
}
$r += max(count($value->getData3()), count($value->getData4()));
}