This is solved in a distributed fashion. The end user machines know which apps they have, and the ordering of the top 11 doesn't change if you already have the first one. So you ship down identifiers for top 20 or 50, which, even with metadata, is going to be smaller, bytewise, than the average apple.com homepage. When you go to display them, you remove the ones the user has and display the top 10 of the remaining set. If there are none left, request another block of apps. The size of the first block to send can be honed in on over time based on the number of subsequent blocks requested by clients.
But even doing this server side isn't that bad, calculating the difference between two sets, the top 100 apps and the apps a user owns, iterating with more if the size of the result is less than 10, is a lot less work on a per-user per-request basis than a lot of sites do to customize their experience.
Of course, Apple most likely doesn't want anyone to know which app is the 11th or something, which means a lot of server side processing to customize the exact list of 10 sent to the client. Sites like Facebook already do this kind of stuff for calculating the timeline for hundreds of millions of accounts.