Seu código está se comportando conforme o esperado. O procedimento está chamando a si mesmo recursivamente .
Se você não quer isso, tente isso:
ALTER PROCEDURE dbo.Test
@Value int = null
AS
BEGIN
IF (IsNull(@Value, '') = '')
SELECT 'I am NULL!'
ELSE
SELECT 'I am ' + CONVERT(varchar(20), @Value)
END
GO
EXEC dbo.Test
Se você quer para usar recursão, você precisa definir um caso base (AKA "condição de saída") que fará com que o procedimento armazenado saia da pilha de recursão.