Você não pode - como a mensagem de erro já afirma claramente, qualquer entrada de índice não pode ter mais de 900 bytes.
Você não pode indexar um campo varchar(4096) - período. Não há como contornar isso - é um limite rígido do SQL Server - não há como configurá-lo, alterá-lo, torná-lo maior. Consulte Manuais Online - Tamanho Máximo de Chaves de Índice para confirmação.
Você precisa limitar sua coluna "valor" a menos de 900 bytes ou encontrar outra maneira de armazenar esses dados - ou simplesmente não incluí-los no índice. Se você deseja apenas que seu campo "valor" no índice tenha um índice de cobertura (para poder satisfazer as consultas da entrada do índice), você pode mover o campo para uma coluna incluída no índice - eles não ficam abaixo do limite de 900 bytes.
CREATE NONCLUSTERED INDEX idx_ncl_2
ON BFPRODATTRASSOCIATION(attributeid)
INCLUDE (productid, value)
Esse índice deve funcionar.