Segue detalhes!
Composer update:
Lê o arquivo composer.json
Remove pacotes instalados que não estejam como requeridos no composer.json
Checa a disponibilidade de versões atualizadas dos pacotes necessários
Instala as últimas versões dos pacotes
Atualiza o arquivo composer.lock com os pacotes instalados e as versões dos pacotes.
Composer Install
Ele não atualiza nada, apenas instala todas as dependências conforme especificadas no arquivo composer.lock
Checa se o arquivo composer.lock existe. (Se não existir, execute o comando composer update para criá-lo).
Lê o arquivo composer.lock
Instala os pacotes conforme especificados no arquivo composer.lock
Quando usar o update e quando usar o install:
Composer update é normalmente utilizado na fase de desenvolvimento, para atualizar os pacotes do nosso projeto conforme especificados no arquivo composer.json.
Composer install é utilizado na fase de deploy para instalar nossa aplicação no servidor de produção ou em ambiente de teste, usando as mesmas dependências registradas no arquivo composer.lock quando criado pelo composer update.
Sendo assim, entendo que o pacote não foi instalado com o comando 'composer install' (mesmo estando inserido no arquivo composer.json como requerido) pois ele não estava registrado no arquivo composer.lock.
A situação que foi resolvida com o comando 'composer update' onde instalou o pacote e atualizou o arquivo composer.lock.
Traduzi do link: https://stackoverflow.com/questions/33052195/what-are-the-differences-between-composer-update-and-composer-install