It depends on what kind of app and data access you want to enable.
To start, I found this overview helpful:
http://gravityjack.com/ios-5-for-developers-what-you-need-to-know
The iCloud storage APIs let your application write user documents and
data to a central location and access those items from all of a user’s
computers and iOS devices.
The key here is a user (an account) access to their documents and key/value storage data. So, the key scenario is all about enabling an account to share data amongst all of the devices bound to that account.
A custom cloud web server/service approach would enable multi-user/account access to a share application/data set. It's about more than synchronizing a single account, it's about creating an application where multiple folks share data. If you just need sync of a single accounts document/key/value data, then let iCloud do the heavy lifting. If you need a custom app with multi-user access to shared data (facebook, twitter, etc...) then you likely need your own custom cloud app/service.
Concerning device DBs/CoreData. It's typical to have devices that are occasionally connected. Imagine requiring internet access to get your address book. In that case, you need the app to primarily work off local storage with the cloud used as a conduit to either your other devices or other user's devices (write to local storage with background synchronization to remote cloud storage).