Прежде всего, я сомневаюсь, что об этом стоит беспокоиться. Я предполагаю, что если вы сравните план выполнения запроса для того, что генерирует EF, с планом «оптимального» рукописного запроса, результаты будут фактически идентичны. Я предполагаю, что единственное вероятное наказание заключается в том, что сгенерированный EF запрос будет занимать долю секунды дольше для анализа. В общей схеме это, вероятно, не стоит рассматривать.
Что касается того, почему EF генерирует запрос таким образом, я уверен, что это связано с внутренней сложностью перевода методов LINQ в допустимые запросы SQL. Я уверен, что движок, выполняющий этот перевод, очень модульный, и каждый модуль должен генерировать часть запроса, которая может быть легко включена в окончательный полный запрос. Хотя, безусловно, было бы возможно выполнить последний этап «оптимизации» для устранения избыточности, вероятно, очень мало вреда при делегировании этой задачи самому SQL Server.