IComponentsList у вас по описанию может содержать
любое свойство.
и вы его пушите в IComponents, в котором хотите "строгое" описание. Это несовпадение типов и потенциальный баг от которого вас компилятор честно защищает -иначе у вас в рантайме в components в Main может быть совсем не то что написано в типах.
самым правильным будет добавить индексную сигнатуру в IComponents.
Но если вы уверены в себе и хотите заставить компилятор вам поверить, можно сделать следующее:
this.components[componentKey as keyof IComponents].push(entity.components[componentKey]);
или
(this.components as any)[componentKey].push(entity.components[componentKey]);
или еще каким то образом подавить компилятор в этом месте.