Rubyのprivateメソッドはselfレシーバを指定して呼び出せない

これだめ!

class Foo
  def aaa
    self.bbb
  end

  private
  def bbb
    puts "bbb"
  end
end

Foo.new.aaa # => エラーだよ。

privateメソッドはselfレシーバを省略して呼び出す。

class Foo
  def aaa
    bbb
  end

  private
  def bbb
    puts "bbb"
  end
end

Foo.new.aaa # => "bbb"

でもこれって、代入の際にselfレシーバを省略すると、ローカル変数として扱われるって規約とぶつかるんじゃないの?
kelkronsoさんが取り上げてた⇒http://d.hatena.ne.jp/kelkronso/20080806/1218033736
↓これだと、cccがローカル変数として扱われる。

class Foo
  attr_reader :ccc
  def aaa
    ccc = "ccc"
  end

  private
  def ccc=(c)
    @ccc = c
  end
end

f = Foo.new
f.aaa
puts f.ccc # => nil

そもそも代入メソッドがprivateなんてキモいことはないような気がするけど、これじゃ呼べないじゃん。
一応selfをつけてエラーになることを確認する。

class Foo
  attr_reader :ccc
  def aaa
    self.ccc = "ccc"
  end

  private
  def ccc=(c)
    @ccc = c
  end
end

f = Foo.new
f.aaa
puts f.ccc # => "ccc"

!?こいつ呼べるぞ!ってことでprivateなメソッドでも代入メソッドは例外みたいです。