>weight*関数で何故一番目のコンポーネントを二倍する
>必要があるのかは分かっていません。

一番目のコンポーネントがsimplerになっているかどうかを定量的に評価するため。
例えば2ではない数でやってみるとどうなるかやってみるといい。3とか5とか7ではどうか?

>alignの再帰が進むにつれて何かが減っていくということを定量的に
>示すためにweight*を持ち出しているとは予想できるのですが、

これについては予想で終わらせずに、実際計算してみるほうがいい。
length*のようなsimplerになっているかどうかの定量的評価と、
weight*のようなsimplerになっているかどうかの定量的評価では
どちらが再帰関数のThe seventh commandmentを確認できるか?