Existem alguns fatores que podem afetar isso:
Um aplicativo deve declarar explicitamente que é preferível / possível ser instalado no cartão SD.
A partir do nível 8 da API, você pode permitir que seu aplicativo seja instalado no armazenamento externo (por exemplo, o cartão SD do dispositivo). Esse é um recurso opcional que você pode declarar para o seu aplicativo com o android:installLocation
atributo manifest. Se você não declarar esse atributo, seu aplicativo será instalado apenas no armazenamento interno e não poderá ser movido para o armazenamento externo .
(Ênfase minha)
Um aplicativo está configurado para compilar usando a API 7 (Froyo) ou inferior, que não oferece suporte à instalação de um aplicativo no cartão SD (mesmo que esteja instalado no GingerBread ou em dispositivos mais recentes)
A capacidade do aplicativo para instalar no armazenamento externo é um recurso disponível apenas em dispositivos que executam a API Nível 8 (Android 2.2) ou superior. Os aplicativos existentes que foram criados antes do Nível 8 da API sempre serão instalados no armazenamento interno e não podem ser movidos para o armazenamento externo (mesmo em dispositivos com Nível 8 da API) . No entanto, se o seu aplicativo for projetado para oferecer suporte a um nível de API menor que 8, você poderá optar por oferecer suporte a esse recurso para dispositivos com nível de API 8 ou superior e ainda ser compatível com dispositivos usando um nível de API menor que 8.
(Ênfase minha)
Os motivos pelos quais alguns aplicativos não são preferíveis para instalação no cartão SD são os seguintes:
Quando o usuário permite que o armazenamento em massa USB compartilhe arquivos com o computador (ou desmonta ou remove o armazenamento externo), qualquer aplicativo instalado no armazenamento externo e em execução no momento é eliminado. O sistema efetivamente desconhece o aplicativo até o armazenamento em massa ser desativado e o armazenamento externo ser remontado no dispositivo. Além de matar o aplicativo e torná-lo indisponível para o usuário, isso pode interromper alguns tipos de aplicativos de uma maneira mais séria. Para que seu aplicativo se comporte de maneira consistente conforme o esperado, você não deve permitir que ele seja instalado no armazenamento externo se ele usar algum dos seguintes recursos, devido às consequências citadas quando o armazenamento externo for desmontado:
Serviços
Sua execução Service
será interrompida e não será reiniciada quando o armazenamento externo for remontado. [...]
Serviços de Alarme
Seus alarmes registrados AlarmManager
serão cancelados. [...]
Mecanismos do método de entrada
Seu IME será substituído pelo IME padrão. [...]
Papel de parede animados
O seu Live Wallpaper em execução será substituído pelo Live Wallpaper padrão. [...]
Widgets de aplicativos
O seu App Widget será removido da tela inicial. Quando o armazenamento externo é remontado, o App Widget não estará disponível para o usuário selecionar até que o sistema redefina o aplicativo doméstico (geralmente não até a reinicialização do sistema).
Gerentes de conta
Suas contas criadas com AccountManager
desaparecerão até que o armazenamento externo seja remontado.
Adaptadores de sincronização
Você AbstractThreadedSyncAdapter
e toda a sua funcionalidade de sincronização não funcionarão até que o armazenamento externo seja remontado.
Administradores de dispositivos
Seu DeviceAdminReceiver
e todos os seus recursos administrativos serão desativados, o que pode ter consequências imprevisíveis para a funcionalidade do dispositivo, que podem persistir após a remontagem do armazenamento externo.
Receptores de transmissão ouvindo "inicialização concluída"
O sistema entrega a ACTION_BOOT_COMPLETED
transmissão antes que o armazenamento externo seja montado no dispositivo. Se o seu aplicativo estiver instalado no armazenamento externo, ele nunca poderá receber essa transmissão.
Se o seu aplicativo usa algum dos recursos listados acima, você não deve permitir a instalação no armazenamento externo.
(Algumas partes são editadas. Eles estão explicando o que os desenvolvedores precisam fazer para que seus aplicativos funcionem corretamente após a remontagem do cartão SD.)
Nota : esta resposta serve como informação geral para "Por que alguns aplicativos não podem ser movidos para o cartão SD"
Fonte: Desenvolvedores Android: Local de instalação do aplicativo .