何度もスマソ。
素のtoArray()は添字配列なんで、単純にループさせる場合はそれでいいが、
ループで済まされない場合は属性(name)を使った連想配列の方が、
やっぱ何かと都合がいい。
そんなわけで、エレメントだけ一つ掘った配列になるよう
Smartyレンダラ(ArraySmarty)を継承して作ってみました。
<?php
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
class HTML_QuickFrom_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty{
    function _storeArray($elAry)
    {
        if ($elAry) {
        $sKeys = $elAry['keys'];
        unset($elAry['keys']);
        // where should we put this element...
        if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) {
            $toEval = '$this->_currentGroup' . $sKeys . ' = $elAry;';
        } else {
            $toEval = '$this->_ary[\'elements\']' . $sKeys . ' = $elAry;';
        }
        eval($toEval);
        }
        return;
    }
}
?>
[\'elements\']を追加しただけですけどね。とりあえずこれで動いた。