Google's documentation defines using a SD card on a Android device in two separate ways portable storage and internal storage (which is also known as adoptable storage):
From: https://support.google.com/android/answer/12153449?hl=en
When you set up an SD card on your Android device, you can choose between portable storage or internal storage.
When you format an SD card for portable storage:
You can save files, like photos and videos, on the SD card.
You can’t install apps on the SD card.
You can transfer the SD card between devices.
When you format an SD card for internal storage:
You can load files, like photos and videos, on the SD card.
You can install apps on the SD card.
You can’t transfer the SD card between devices.
The SD card can be used in addition to your device's storage.
In regions where data plans are expensive or mobile data is inconsistent, putting personal media (videos, music, photos) locally allows for device owners to use their content in an acceptable manner.
Certain apps like games may exceed the pre-built storage of a device so if the device supports adding a SD card, using a SD card to increase app storage may be desirable. This does come at the cost that the SD card is now bound to that device by a cryptographic key.
Switching a SD card between different storage types requires reformatting of the SD card
But wait why can't some apps be moved to adoptable storage?
From: https://source.android.com/docs/core/storage/adoptable
Apps can be placed on adopted storage media only when the developer has indicated support through the android:installLocation
attribute. New installs of supported apps are automatically placed on the storage device with the most free space, and users can move supported apps between storage devices in the Settings app. Apps moved to adopted media are remembered while the media is ejected, and return when the media is reinserted.
So for standard Android, developers need to enable the setting assuming the app is appropriate and not using certain features in the app. Social media apps generally use services to get/send content and so would not have the setting for installing on SD card. It can also be due to oversight by the app developer as the default is android:installLocation="internalOnly"
.
https://developer.android.com/guide/topics/manifest/manifest-element#install