lastに強引にセッターを設けるなら、a.last = nil の挙動は素直に、a[a.count-1] = nilと同等にとるのが
普通の感覚だろうと俺は思うんだけど、そこに、やれその場合は配列を空にしようとか、要素を削除しようとか
の想定をして話を奇妙にしてるから、俺はそのことを>>302にレスしたんだけど
横から勝手に君が>>302の代弁を始めたんじゃん
そもそも>>302の本心なんて、>>302じゃない君にはわからんだろうと思うんだけど、そこも俺には奇妙だよ

実際、君の例のaの要素にnilを代入する場合は、a[3] = nil でオッケーなんだし
シンプルに考えればいいんじゃねと思うけどね
ま、なんにせよlastのセッターはいらんけどね
俺も君と議論するんじゃなくて、>>302のレスが聞きたいよ