That's definitely strange. Personally, I deployed mine from VS, but I've deployed CLRs manually before, and didn't have any such problem.
If I script out my function, it looks mostly identical to your SQL script:
CREATE FUNCTION [dbo].[ufnFunction](@variable [nvarchar](4000))
RETURNS [nvarchar](4000) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [SqlServerCLR].[UserDefinedFunctions].[ufnFunction]
So I'm not sure what's going on. Have you tried deploying from VS? Before this project, I had never tried deploying from VS before, but I tried it and it was pain-free. Might be worth a shot since the manual way is giving you trouble...
I'm not sure if this will make a difference, but the permission level will need to be External. I had to change that in the project properties before deploying.
--J