В контейнер кладут классы, прежде всего для того, что бы иметь возможность управления зависимостями. Иными словами, что бы иметь возможность подменить класс А на класс Б, при первой необходимости не затрагивая основные структуры программы, а так же для того, что бы система знала, где искать какой-либо класс, когда его запрашивают. И сделано это было отнюдь не для удобства реализации Синглтонов и т.п. Иными словами, контейнер - это часть реализации DI-механизмов, а не "синтаксический сахар".