For my app - where I use CoreData as well - I decided to go with option 1, for several reasons.
First on all it's just a bit more coding, but performance is so much better with that approach. If you are planning to use NSFetchedResultController you should definitely go with update option. Otherwise it will listen to your changes and it will reload all the views so many times, because you delete all objects and readd them.
Most important removing all objects is really expensive operation in CoreData because you have to fetch all objects first, than delete them one by one !!! It's really bad idea :) For several hundreds entries it's really taking application performance down if you are planning to do updates in background not blocking a screen during update process.
As an optimization I would recommend to keep on your server side timestamp for each object and pull only changes from last updated time on mobile side - incremental updates.