Nowhere (that I can see) does any documentation "define" that replace returns null on null input to arg 3. Nor is it obvious that any "strict" application of any principle should have it return null.
Fair, I keep forgetting that we don't document the "strict" property of a function definition. Absent that, I agree it's a documentation bug that we don't adequately explain the strictness behavior of this function.
"Replacing text with null is problematic, but no problem arises if there is nothing to be done." - while true I see little desire to make that conditionalized behavior reality. IOW, you are correct, but it also isn't likely to change. The current behavior benefits developers over users, but we make up for it by spending time elsewhere.