Tracking is the big one, but depending on the app, there can be performance-related reasons. If your app is graphics/multimedia heavy and you want the interactions to be seamless and fluid, you really want to be in control of all the threads and resource loading and can't trust a browser/JS-engine not to glitch your buttery-smooth transitions and animations. Or at least, you'll spend a lot more work trying to get it to acceptable. Lots of people wouldn't care about this, but I've worked for some folks who are absolutely rabid about perfecting the UX and sometimes, native is the best choice for that.
Edit: but for real, it's the tracking almost always.
They have more control with apps and it allows for much more invasive tracking than any browser, including cross-app tracking and persistent unique identifiers.
Most Apps can make sure you have to view ads, because there are no simple ad-blocking solutions on native, and apps can use additional income methods such as micro transactions or similar.
User retention is much better on apps -- if someone hasn't engaged with your app in a while, the app can send a notification/has more avenues for re-engaging the user compared to a website.
Edit: but for real, it's the tracking almost always.