Mi sento rimbambito anche io a leggere quel codice.

Cmq, credo che tu debba fare:
Nel html: <input name="MailingList[<?php echo $row[0];?>]" type="checkbox" ... //ovviamente se il tuo user id non e' row[0] metti l'indice giusto..
Nel php: foreach ($_POST['MailingList'] as $uid =>$val){ $a->Edit_mailinglist($uid, $val);}

Penso che il problema sia dovuto al fatto che gli id nel db non siano perfettamente seriale (che e' normale), quindi non va bene nel html aggiungerli ciecamente in un array, contarlo, e fidarsi del fatto che gli indici dell'array saranno uguali agli id nel database.