As a developer, i'll admit a few things:
1. It promotes my laziness. I don't have to bother coding up databases and saving things because all I have to do is pull information from online.
2. It reduces app footprint. Apps are easily downloadable, workable, and transferable when they don't save things locally.
3. What do I save offline? Everything? Only user specified things? There's a few decisions you have to make, and not everyone will be happy. ("Why didn't the developer ONLY download what I want? I don't want everything saved on my device!" vs "Why didn't the developer download everything? I don't want to go through one by one and pick what I want... I want it all!").
To combat points 2 and 3, you can say just code in preferences, but then that counteracts point 1. It's a lot of coding to cater for such preferences. Especially for an inexperienced developer such as myself. I will admit though, the GOOD apps (the ones worth keeping) will have developers that implement a LOT of features (such as offline caching of information) and user preferences on how they want to save/store/manage that data.
It takes effort and commitment, but it makes for a VERY good app. I did this with one of my apps and I felt (and still feel) like it was the best app I ever made. However, it definitely took me a while to figure it all out and get it working to the point of looking/feeling intuitive and easily understandable.
Too many options and the user gets annoyed/frustrated and doesn't want to use the app anymore.
As a developer, there's a lot of hard choices you have to make which essentially break down the amount of effort you will end up putting in, and the delays it will introduce to your app (or number of frustrated users until you push out an Update).
That's probably way more than you wanted to know, but I just felt like I should clarify because this is something I struggle with whenever updating an app, or making a new one.