In SQL Server there is two schemas for metadata:
I have heard that INFORMATION_SCHEMA tables are
INFORMATION_SCHEMA is more suitable for external code that may need to interface with a variety of databases. Once you start programming in the database, portability kind of goes out the window. If you are writing stored procedures, that tells me you have committed to a particular database platform (for better or for worse). If you have committed to SQL Server, then by all means, use the sys views.