I read somewhere it was a twice-a-day update. If they tried to update the full list every time somebody submitted a score, I imagine it would be a major DB nightmare. You have three options:
* One, update the full list on every score post. This means ordering all entries by score and doing a full recalculation in one giant DB query, or else doing lots of little queries to get your prior score/rank, figuring out where your new position will be, and redoing all people who have shifted up or down from your new score. Also note that cool though this situation could be, you'd still need to do a full update every so often to reduce the value of older games.
* Two, read the list from the DB every time somebody looks at it. This would be even worse because the list is probably read waaaaaay more often than written to, and not caching expensive DB hits is bad for a site that gets even moderate traffic.
* Three, do a full update regularly and just accept that it'll be out of date for a few hours.
Two is the coolest because it's always real-time, but by far the most performance-heavy. One is pretty cool as well, but can have issues when scores are being recalculated by two submissions at the same time. Three is the easiest, least db-intense, and least prone to technical problems.