Explanation: Stored procedure calls will silently truncate strings.
I believe the Explanation here is more fundamental than "Stored procedure calls...", instead having to do simply with the declaration of the var.
Note that this likewise returns just 4 chars:
declare @testVar varchar(4)
set @testVar = 'This is a test string'
"You do not really understand something until you can explain it to your grandmother" - Albert Einstein