XML::RSS の挙動がおかしい。& などの実体参照を RSS に書くときにはエスケープする必要があるが、そのようにして書き出した RSS ファイルを parse すると、XML::Parser が勝手に実体(つまり &) にデコードする。
そうしてできたオブジェクトにアイテムを追加し、as_string でRSS化すると、当然のことながら、エスケープはされてない。バグっぽいので RT に報告しときました。