Это «старый» вопрос, но у меня под ним другой угол.
Если у вас будет много долгоживущих строк из небольшого пула , интернирование может повысить эффективность памяти.
В моем случае я перерабатывал объекты другого типа в статическом словаре, потому что они часто использовались повторно, и это служило быстрым кэшем перед сохранением их на диск.
Большинство полей в этих объектах являются строками, и пул значений довольно мал (во всяком случае, намного меньше, чем число экземпляров).
Если бы это были временные объекты, это не имело бы значения, потому что строковые поля часто собирались бы мусором. Но поскольку ссылки на них сохранялись, их использование памяти начало накапливаться (даже когда новые уникальные значения не добавлялись).
Таким образом, интернирование объектов существенно уменьшило использование памяти, и так же сделали интернирование их строковых значений во время интернирования.