Acho que UDFs são muito úteis e eu os uso o tempo todo.
Não tenho certeza de qual é o raciocínio da Microsoft para não incluir um sys.functions equivalente no SQL Server 2005 (ou SQL Server 2008, até onde sei), mas é fácil fazer o seu próprio:
CREATE VIEW my_sys_functions_equivalent
AS
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') -- scalar, inline table-valued, table-valued