Like RB said, it takes so long (even for ROMs that you don't have) because of disk access. Remember, there's no 1:1 mapping between game name and zip file name, so it's more than just a simple "file-exists" check. Then again MAME32 seems to fly through missing ROMs really fast, so I need to look at their code to see what they are doing. Maybe they're not doing a full audit.
Also, it takes longer than straight-up core MAME or SDLMAME because it's doing the work in the idle loop, when nothing else is active nor events are happening. So it doesn't just bear on full-speed ahead. The idea was to keep the UI usable, without spawning a separate thread. In practice, this doesn't seem to work so well, especially on slower machines like a PowerBook G4. I may use the osd_work stuff, but as RB said this is I/O bound so it's not much of a speed-up.
Yes, this all sucks. Yes, I know it. No, I don't have a solution right now, and probably won't before the next release. I'll probably just disable the update, by default. Sorry, but for now, we're just gonna have to deal.