jQuery を使用している (または追加してもかまわない) 場合は、これらの方法よりも効率的に作業を進めることができます。
function getMaxColCount($table) {
    var maxCol = 0;
    $table.find('tr').each(function(i,o) {
        var colCount = 0;
        $(o).find('td:not(.maxcols),th:not(.maxcols)').each(function(i,oo) {
            var cc = Number($(oo).attr('colspan'));
            if (cc) {
                colCount += cc;
            } else {
                colCount += 1;
            }
        });
        if(colCount > maxCol) { 
            maxCol = colCount; 
        }
    });
    return maxCol;
}
実装を容易にするために、調整が必要な td/th を「maxCol」などのクラスで装飾し、次のようにします。
$('td.maxcols, th.maxcols').each(function(i,o) {
    $t = $($(o).parents('table')[0]); $(o).attr('colspan',  getMaxColCount($t));
});
これが機能しない実装を見つけた場合は、答えを非難しないでください。コメントで説明してください。カバーできるかどうかを更新します。