While no explicit cast is actually required, we have a very large amount of generated code that uses explicit type casting this way.
I'm unsure about the regression but in fact the explicit cast is simply incorrect conceptually. You are supposed to be supplying a variable to the call. What you are supplying is a constant. That constant has the same value as the variable but is not itself a variable and even has a different type. If you write: SELECT lv_somestring::varchar(1) you will get back the first character of the max 4,000 character value presently in the variable lv_somestring. But you will not be changing the value stored in lv_somestring. Extend that concept to CALL and you can see why the error you are being shown in v13 is correct.