Wouldn't even call it a programmer error. Someone probably just implemented a getContacts() function that gets called often in the background without saving the data in a local database or caching - and why would you do anything other than this for very marginal performance benefits, a rise in complexity, and possible data sync issues?
Another app might access your contacts rarely but store them on their server (Facebook!?). I definitely prefer the previous scenario.