Проблема в этой строке с объявлением TBar:
FFoo := Self.Create;
Чтобы понять, давайте объясним типы кода [отмечены так]:
FFoo:[IBar] := Self:[TFoo(IBar)].Create():[TFoo<IBar>]
Итак,Подводя итог, мы имеем: [IBar] := [TFoo<IBar>]
Совместимы ли эти типы?
A [TFoo] только реализует IFoo интерфейс, нет IBar какэто указано в вашем коде
TFoo<T: IInterface> = class(TInterfacedObject, IFoo)
Это ошибка компиляции!
ОБНОВЛЕНИЕ: Решение 1
Чтобы устранить проблему: измените TBar объявление
TBar = class(TFoo<IFoo>, IBar)
end;
ОБНОВЛЕНИЕ: Решение 2
Замените FFoo := Self.Create
на
FFoo := Self.Create.Instance;
и так оно и будет!