Thank you very much for reporting an issue Nicholas!
In fact, this is documented here although it is not very visible.
I am attaching a patch that updats the built-in function doc (including CONCAT, AVG, MIN, MAX, and SIZE) regarding nulls.
Regarding your suggestion of changing the behavior of CONCAT, even though it is total valid, I'm afraid that that could introduce backward incompatibilities. That is, some people may rely on that CONCAT returns nulls in their scripts. Given that this can be easily achieved by writing your own UDF, I prefer to keep the current behavior.
Please let me know if anyone thinks otherwise. Thanks!