Use Expo.io ... if you're building in React Native, Expo is the easiest way to distribute apps (even on the Web with Snack)
One example would be if an app uses third party libraries that rely on native code. Now on the surface this might sound like an exotic requirement but consider that most mobile apis for third party services will probably wrap objective c or Java code.
An example of this came up for a friend who was building a github app. He had to eject from expo because the github mobile api wasn’t included in expo and required native code for authentication.
You can even work with things like Promises etc across native boundaries
Also, the last time I checked ejecting from expo, which you will need to do to use native code, was a bit of a pain. That was a few weeks ago so maybe they have stream lined the process since then.