потому что всем системам нужно писать в компоненты, которые используются для рендеринга, а ECS с двойным стейтом вроде как никто не делает
Потому что это не нужно. Обычно ты для рендеринга используешь отдельный формат данных, в который конвертируешь данные из мира. Так что это можно делать как залочил -> сконвертировал мир в промежуточную репрезентацию для рендера -> разлочил -> рендеришь никому не мешая.