Eu trabalhei um pouco em um provedor de estrutura de entidade e analisei isso. Acredito que o próprio provedor não tem escolha na situação. A árvore de comando é criada pela estrutura de entidade e a entrega ao provedor para construir o SQL. Esta é uma suposição completa aqui, mas talvez o motivo de gerar a junção LEFT OUTER nessa situação seja porque a estrutura de entidade não sabe realmente que a restrição referencial existe no banco de dados. Por exemplo, posso entrar e mexer no modelo de entidade depois que ele é criado a partir do banco de dados e adicionar/alterar restrições que não refletem o que o banco de dados está fazendo. Talvez por esta razão, os designers optaram por jogar pelo seguro e produzir a junção LEFT OUTER "apenas no caso".
No entanto, acredito que você pode obter uma junção interna. Por exemplo, o seguinte fez com que o provedor criasse uma junção LEFT OUTER:
var res2 = from a in ent.answers
select new
{ a.Answer1, a.user.UserName };
No entanto, o seguinte resulta em uma junção INNER:
res2 = from a in ent.answers
join u in ent.users
on a.UserID equals u.PK
select new { a.Answer1, u.UserName };
Além disso, a seguinte entidade SQL produziu uma junção interna:
ObjectQuery<DbDataRecord> dr = ent.CreateQuery<DbDataRecord>(
"SELECT a.answer1, u.username " +
"FROM answers as a inner join users as u on a.userid = u.pk" );