Не совсем правильное сравнение, если это сингелтон то естественно оно будет держать один экземпляр этого класса во всём приложение и при каждом доступе будет его отдовать вы можете настроить так что при каждом доступе к объекту хранилиши сбрасывались последние состояние где вы были что бы опять работать из root папки кому то удобно работать как вы говорите кому удобно так имено поэтому это опция.
Я не вижу там сброса хранилища в дефолнтное состояние. Кому как удобно - это в yii2 было, здесь же у нас все зависимости внедряются через контейнер. Тоже самое метод local у класса File - это нарушение абстракции. И по поводу "не было необходимости делать методы защищенными" - опять же, в контейнере у нас синглтон, а в классе Storage мы легко можем задать ему абсолютно любое новое соединение и все потом будут получать его из контейнера вместо того, что было задано из конфигурации. Очевидно что делать так нельзя.