Neither is "correct". You need to consider the effects of any strategy, and determine what's right for your app. Personally I think you should always plan for your app to be popular--and once it's popular, people will attempt to game whatever system you've put in place. So you need to consider the abuse cases in each scenario, as well as how the system serves both new and established users, and decide what factors of the system are most important to you.
Of course within each system, you've got a wide range of options for the actual implementation, which can help to enhance or mitigate the factors laid out below, but I'm going to skip all that since it's not what you asked about.
I think the question as it stands is a little too opinion-based to be answered definitively, so all I'm going to do here is lay out some of the major points of each system. Like I said, it's up to you to decide what's important to you and your user base.
Calculating Using Starting Ratings
In this system, the main abuse case you need to look at is someone starting a hundred games at once against a dummy account (or several), to win them all and inflate their rating. This is fairly detectable and easy to engineer against (in fact the Elo system already contains some restrictions on such manipulation), but you do need to watch out for it.
The downside to this system is that new players will have very unstable ratings for a time, and take a while to reach their true rating. Most systems already deal with this by vastly increasing the K-factor for new players, so that their ratings change very quickly for their first 20-50 games or so.
On the other hand, say you have an established player with a high rating (say 1900), up against a new player with a lower, provisional rating (say 1200). If the new player's true strength is actually 2000+, the established player may lose many more points for a loss (1900 vs 1200) than he would have if the score was calculated using the most recent scores. Of course, if the new player is only playing against high-rated players, someone is going to have to foot the bill no matter what system you're using.
- Easy to spot potential abuse
- Slow rating convergence
Calculating Using Current Ratings
In the most-recent-ratings system, the main abuse case is likely to be people dragging out games or prematurely resigning them in order to take advantage of dips or spikes in their or their opponent's ratings. For instance, if I've been on a losing streak, so that I'm below my true average rating, this system actually gives me an incentive to immediately resign every other game where I'm not winning, because I'll lose fewer points now, by resigning them all at once while my rating is already low, than I would if I waited until my rating recovered. Alternately, if my opponent's rating drops while the game progresses, I have a strong incentive to make the game last as long as possible in real time, no matter whether I'm winning or losing--because either way, when my opponent's rating recovers, I'll come off better. This sort of gaming of the system is much harder to detect conclusively.
However, as others have pointed out, the individual results are more accurate, and people's ratings therefore converge faster. You'll also lessen the effect of the game played by a provisional 1200 against an established 1900, though personally I think this is not at all a big deal--established players, in my experience, don't care so much about temporary rating losses as newer players do.
- Hard to spot potential abuse
- Faster rating convergence