Unless you have absolutely no other option, you are generally better off using stored procedures.
If Microsoft decide (as they are quite likely) to change the internal workings of SQL Server, there's a good chance that querying the system tables will not produce the same results.
Using a system stored procedure however, will most likely be updated to reflect any changes in the underlying workings.
It just makes it that little bit easier when porting your database (and database-based apps) to a new version of SQL.
Just my two cents...
L