Ambas as construções estão corretas, embora o seu significado tenha ligeiras diferenças.
A preposição para pode ter um valor espacial, de indicação de direção, ou um valor temporal. É este último o seu valor na frase:
(1) «O melhor está para vir.»
Com um valor temporal, a preposição para aponta para o intervalo de tempo «que segue imediatamente o intervalo temporal do mesmo tipo em que é produzido o enunciado (ou seja o tempo de enunciação […])»1. O Dicionário da Língua Portuguesa Contemporânea refere que para «na conjugação perifrástica, liga verbos auxiliares ao infinitivo, traduzindo a ideia de iminência ou de intenção». Desta forma, a frase (1) refere um evento que está em vias de ter lugar, que está iminente.
A preposição por, para além da sua utilização na introdução do complemento agente da passiva, pode expressar valores de causa, instrumento e também de tempo. É também este último valor que está presente na frase:
(2) «O melhor está por vir.»
Quando assume o valor temporal, a preposição por pode expressar uma ação não começada (cf. Dicionário da Língua Portuguesa Contemporânea). Deste modo, na frase (2) coloca-se a tónica no facto de o evento ainda não ter tido início.
Disponha sempre!
1. Raposo e Xavier in in Raposo (coord.) Gramática do Português. Fundação Calouste Gulbenkian, pp. 1553.