works until you need to use a native library that hasn't been ported for Expo, then you need to eject. I would only consider Expo for POC/MVP
(Disclaimer: I use Expo at work for cross-platform app including web but never wrote my own plugins)
With the "prebuild" workflow you can regenerate your iOS and Android projects anytime you need. And set up scripts for adding external libraries in the process.
It is more work to set up over just altering the native projects, but the result is rather nice.
I've never felt 100% confident that react native project folders wouldn't break for arbitrary reasons. Being able to so easily start over is very useful.
Maybe that's better now?
This is in contrast to an IPA or AAB file which can be deployed to a device or distributed to an App Store.