Jag tycker att UDF:er är väldigt praktiska och jag använder dem hela tiden.
Jag är inte säker på vad Microsofts motivering är för att inte inkludera en sys.functions-motsvarighet i SQL Server 2005 (eller SQL Server 2008, så vitt jag kan säga), men det är lätt nog att skapa din egen:
CREATE VIEW my_sys_functions_equivalent
AS
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') -- scalar, inline table-valued, table-valued