from a quick search i found the following article
as to the benefits of a udf vs an sps:
Procedure allows SELECT as well as DML(INSERT/UPDATE/DELETE) statement in it whereas Function allows only SELECT statement in it.
you can use this to limit the use of a query to a select statment only via the function
Procedures can't be utilized in a SELECT statement whereas Function can be embedded in a SELECT statement.
Stored Procedures cannot be used in the SQL statements anywhere in the WHERE/HAVING/SELECT section whereas Function can be.
this might have an effect on the query load because for each row returned it will execute your udf.
Functions that return tables can be treated as another rowset. This can be used in JOINs with other tables.
Inline Function can be thought of as views that take parameters and can be used in JOINs and other Rowset operations.
In my opinion, it's really a matter of the relevant use case.
You can use a function when you need to manipulate the data per row, or when you want to be on the safe side that a DML query won't run for a user that has permissions to run DML queries.