Em termos de desempenho, um int é mais rápido em quase todos os casos. A CPU foi projetada para funcionar eficientemente com valores de 32 bits.
Valores mais curtos são complicados de lidar. Para ler um único byte, digamos, a CPU precisa ler o bloco de 32 bits que o contém e, em seguida, mascarar os 24 bits superiores.
Para escrever um byte, ele deve ler o bloco de 32 bits de destino, sobrescrever os 8 bits inferiores com o valor de byte desejado e escrever novamente todo o bloco de 32 bits.
Em termos de espaço, é claro, você economiza alguns bytes usando tipos de dados menores. Portanto, se você estiver criando uma tabela com alguns milhões de linhas, vale a pena considerar tipos de dados mais curtos. (E o mesmo pode ser um bom motivo para você usar tipos de dados menores em seu banco de dados)
E em termos de correção, um int não transborda facilmente. E se você pensar seu valor vai caber em um byte e, em algum momento no futuro, alguma mudança de aparência inofensiva no código significa que valores maiores serão armazenados nele?
Essas são algumas das razões pelas quais int deve ser seu tipo de dados padrão para todos os dados integrais. Use byte apenas se você realmente quiser armazenar bytes de máquina. Use shorts apenas se estiver lidando com um formato de arquivo ou protocolo ou similar que realmente especifique valores inteiros de 16 bits. Se você está lidando apenas com números inteiros em geral, faça deles ints.