1. МС - не инициализирован.
То есть где-то ещё должно появиться:
MC := MainClass.Create;
В противном случае поведение программы не предсказуемо.
2. Никакого авто-удаления тут не будет. Если Вы в явном виде не удалили TStringList-ы, они так и останутся в памяти (что логично, потому что, например, Вы могли передать их в другие объекты). Отсюда следует, что FList типа TStringItemList (который по сути своей динамический массив) и все строки который в них хранятся останутся в памяти на веки вечные.
3. Если Вам интересно есть ли Вашей программе утечки памяти воспользуйтесь
reportmemoryleaksonshutdown := true;
Про подробности подскажет Google.
4. Про реализацию с глобальным классом - я не совсем понял технику, но выглядит она очень спорной.
5. MC.Destroy - лучше заменить на FreeAndNil(MC), но всё равно, нужно написать
TMainClass = class(TObject)
...
destructor Destroy; override;
end;
...
destructor TMainClass.Destroy;
begin
MyStrings.Free;
end;
6. Создание подобъекта процедурой CreateMyClass лучше перенести в конструктов "главного класса".