Acho que a validação cruzada simples é a melhor opção.
Tanto o AIC quanto o BIC consideram o equilíbrio entre a complexidade do modelo e a quantidade de informações disponíveis. Com mais dados, modelos mais complexos podem ser aprendidos. No entanto, esse saldo é fixo e não se baseia nos dados.
A validação cruzada é baseada nos dados. Também equilibra a complexidade do modelo com a quantidade de informações disponíveis. Com mais dados, modelos mais complexos podem ser aprendidos. O desempenho em dados não vistos quantifica o quão bem o modelo funciona. Implicitamente, os modelos que são complexos demais (sobreajuste) são penalizados porque fazem previsões ruins.
No caso de muitas variáveis, as altamente correlacionadas podem ser escolhidas durante o treinamento. Durante o teste, no entanto, torna-se aparente que as relações aprendidas não generalizam para dados invisíveis.
Outra vantagem da validação cruzada é que você pode escolher sua própria medida de desempenho.