When you have an instance of the corruption, post the output from CHECKDB please so we can see what the corruption is. Could be a number of different things - my guess is that invalid data is being entered into the database (which is possible in 2000, but not in 2005 onwards).
When you get the corruption, do the following:
DBCC TRACEON (2570)
GO
DBCC CHECKTABLE (tablewithbrokenindex) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
DBCC TRACEOFF (2570)
GO
And post the results.
The traceflag enables some undocumented column data type checks that I put in to 2000.
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