1. Singletonのインスタンスを2つ以上に変更できる
2. Singletonのインスタンスの振る舞いを、継承により変更できる

1. は、正直言って利点とは思えん。GoF本にはそう書いてあるが
そんなシチュエーションに出会ったことがない。

2. は、インスタンスメソッドなので継承が使えるということ。staticメソッドだと無理だから。
これを行う場合、ちょっとした言語依存の小細工が必要になる。
Javaなら、JDBCドライバのようにstatic initializer使えば何とかなるけど、
言語によっては他のパターン(Abstract Factory)を併用する必要がある。

ちなみに2だが、Webサービスクライアントで、通常時とデバッグ時で
異なるSingletonを渡して振る舞いを変えるコードを書いたことがある。