there may be a misunderstanding of what you consider a NULL value on the column - if a Column is NULL then there is no char to replace at all so obviously it will not do the replacement.
However if you are considering that char(0) is your null value then it definitely works - but how you check is not by "displaying" it on ssms but by converting the string to hex and looking at the result.
See example below
, replace(t.str, char(13), '') as str_1
, convert(varbinary(10), t.str) as hex_1
, convert(varbinary(10), replace(t.str, char(13), '')) as hex_1
from (values('abc' + char(13) + char(0) + 'endstr')) t (str)
str str_1 hex_1 hex_1
abc abc 0x6162630D00656E647374 0x61626300656E64737472