Just wanted to test this and wrote a function that does what you want:
// place this in your Page_Controller
public function GridMenu($level, $numLines){
$items = $this->Menu($level);
$numItems = $items->Count();
$remaining = $numItems % $numLines;
$itemsPerLine = floor($numItems / $numLines);
$rows = array();
$it = $items->getIterator();
for($i = 0; $i < $numLines; ++$i){
$row = new DataObjectSet();
$t = $itemsPerLine + ($i < $remaining ? 1 : 0);
for($k = 0; $k < $t; ++$k){
$row->push($it->current(), $it->key());
$it->next();
}
$rows[] = array('Row' => $row);
}
return new DataObjectSet($rows);
}
The method works in the same way as Menu(x), but takes two parameters GridMenu($level, $numLines) where $level is the menu level and $numLines is the amount of lines or rows to output.
In the template you would use this like shown below:
<% control GridMenu(1, 4) %>
<div>
<% control Row %>
<span>$Title</span>
<% end_control %>
</div>
<% end_control %>
This would output your pages of level 1 and split them into 4 rows. As you can see there's an inner loop (<% control Row %>) that outputs the items of a row.