Well, Steve - it's not that bad. We know how to fix all errors that are detected - there's no guessing involved in repair. What you're thinking of is the online checking algorithm in SS2000 that in a couple of pathalogical cases had to guess as to some log record meanings - *never* in repair.
Yes, the behavior you're seeing is consistent with my experience sometimes. A corruption may be 'hiding' other corruptions by preventing deeper checking algorithms from running - once the repair is fixed, as subsequent run of CHECKDB may find more errors bevcause other algorithms are now able to run.
I'd never run repairs without restoring backups first - you will have lost data from your database by doing so (REPAIR_ALLOW_DATA_LOSS is very aptly named).
Thanks
Paul Randal
CEO, SQLskills.com: Check out SQLskills online training!
Blog:www.SQLskills.com/blogs/paul Twitter: @PaulRandal
SQL MVP, Microsoft RD, Contributing Editor of TechNet Magazine
Author of DBCC CHECKDB/repair (and other Storage Engine) code of SQL Server 2005