Eu acho que você está comparando maçãs e laranjas e eu pelo menos nunca vi nenhuma discussão sobre isso. Há discussões sobre se você deve usar UDFs e há discussões sobre se você deve usar procedimentos armazenados ou SQL ad hoc.
Uma UDF inline é algo que você pode usar em uma consulta e um procedimento armazenado é algo que você pode executar e a maioria de seus marcadores é uma consequência dessa diferença.
Uma UDF inline é mais uma visualização do que um procedimento armazenado. Uma visualização parametrizada que pode ser usada em consultas e pode às vezes ser usado para acelerar as coisas .
Eu gostaria muito de ver um cenário em que um UDF embutido e um procedimento armazenado fizessem a mesma coisa e tivessem um desempenho diferente.
Se o procedimento armazenado nunca gravar nada, não haverá diferença no bloqueio.
Não sei sobre as pessoas, mas para mim é tudo sobre a discussão sobre procedimento armazenado vs sql ad hoc. Eu prefiro procedimentos armazenados outros preferem ad hoc. Se você quiser usar funções definidas pelo usuário ao invés de procedimentos você acaba no campo sql ad hoc.