Non conoscendo come hai definito gli oggetti in questione, posso solo fare un ipotesi:

Nella prima riga, mi pare, prendi TUTTE le taglie disponibili, mentre nella seconda ci sono SOLO quelle ordinate. Quindi, sempre per ipotesi, i due foreach hanno dimensioni diverse => ti sfalsa l'accoppiamento taglia-quantità.

Credo che dovresti fare qualcosa del tipo:

Codice PHP:
<?php
foreach($this->collezioni_model->getTaglieDaScalarino ...): ?>
   <th><?php echo $tg->tg_taglia?></th>
<?php
endforeach;

foreach(
$this->collezioni_model->getTaglieDaScalarino ...): ?>
   <th>
      <?php 
           
if($tg->tg_taglia è presente in ordini_model->f($clienteId$rigord->art_modello,$tg->tg_taglia ))
                echo 
ordini_model->f(clientearticolo,$tg->tg_taglia );
           else
                echo 
"0";
       
?>
   </th>
<?php
endforeach;
?>
Come ho detto sto andando per intuizione...