A dúvida é quando usar cada um desses, já que os resultados (pelo menos do parseInt e intValue) são os mesmos.
Há diferença de processamento, memória etc?
OBS: Eu já li em uma outra dúvida que valueOf retorna um objeto, e se usa quando se quer/precisa usar objetos. Mas parseInt e intValue me parecem ser a mesma coisa.
OBS2: Aproveitando a dúvida: O professor disse que em algum momento os tipos primitivos serão retirados do Java. Sendo assim, é boa prática usar os objetos Integer etc no lugar dos primitivos, ou é um exagero usar um objeto, por exemplo, em um laço for?