The chief complaint seems to be the lack of internal storage, but the phone has an SD slot that supports cards up to 32GB while his shiny iPhone 8 has exactly 0 GB expandable storage.
Except that's not how it works in the Android world. You have internal storage that needs to be freed up to hold apps. When that memory runs out, that's it. The SD card isn't for holding apps.
We used to root Android for this reason. We needed to free up silly apps no one uses and we had to have the ability to aggressively clear out the system.
Android has supported apps on SD cards for ages. First with Apps2SD then since 6.0 Adoptable Storage which just treats internal+SD as one big storage pool. A lot of higher end phones have disabled the UI for Adoptable Storage due to performance concerns though it is still possible to set up with ADB commands. This type of phone however is the exact sort of thing it's meant for.
You can run apps from SD on Android provided the vendor hasn't neutered it. It was a custom Moto feature for KitKat but was upstreamed for Lollipop and up.
As of Marshmallow, you can format the SD card as internal storage. I did that on my dad's phone just this week and it doesn't seem to have the limitation you described.