No método IncluiProduto da classe Promocao, ao criar uma nova instância de PromocaoProduto, a única propriedade inicializada foi Produto.
public void IncluiProduto(Produto produto)
{
this.Produtos.Add(new PromocaoProduto() {Produto = produto });
}
Teoricamente a propriedade Promocao da nova instância PromocaoProduto estará nula.
É um comportamento natural do EntityFramework entender que, por haver relação de chave estrangeira, a propriedade Promocao da instância de PromocaoProduto refere-se à instância do objeto Promocao a qual a lista pertence?