Other than protecting against future changes, I can't think of a good reason.
Possibly SELECT * requires an extra lookup to the system tables to get the column names. Kinda like the sp_ double lookup.
Would be interesting to check, but I'm not quite sure how. Maybe profiler and the object Access events
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability