I like Apple's Game Center leaderboard and achievement tracking in that it's very easy to implement (even if you don't have plug-in support but are willing to learn some Objective-C), For one thing, the critical GameKit function calls are non-blocking. Scores are uploaded and displayed in metrics that the developer can define, and achievements have a percent completion. Furthermore, my experience has been that the Game Center will not lose data (suppose a bug reset your game score from 10,000 to 0...the Game Center will still keep you at 10,000). They do, of course, provide a reset function you can explicitly invoke.
One thing to keep in mind is to be careful when designing your achievement icons. I had to change most of the ones in Tiltz because they looked terrible in front of Apple's achievement board "Paper plate" backdrops. Make sure your icons look good with a white background behind them.
You can also display Apple's leaderboard within your Unity app using GKLeaderboardViewController. I discovered after a few hours that you can do it if you make sure you present the controller with the animated parameter set to NO. However, I ended up just getting and displaying the numbers myself because bringing up the leaderboard view is extremely slow. (It's bad enough that loading a scene on the iPhone can take a whole second...what's going on during that time anyway and how can I speed it up?).
How to do it all without plug-ins? The same way I implemented in-app purchases: Using PlayerPrefs (default user setting properties) as a "communication bridge" between the Unity scripting layer and the Objective-C layer. I learned this at Tinytimgames.com