Nice question, but I think the explanation of concatenatex is a bit off - the elements that get concatenated are the results of evaluating the expression parameter on every row of the table denoted (or generated - the table parameter can be an expression instead of a table name) by the table parameter, so the explanation is incorrect unless the scalar expression parameter denotes a column of that table (and sometimes it doesn't). In the example given on the BoL page referenced the expression doesn't designate a column, it generates a scalar value from more than one element of the row it's applied to and it's those scalar values that get concatenated. For the same reason, I think it's a bit off to call the "expression" parameter the "column" parameter.
Obviously concatenatex (T, Exp,D) = concatenate ((select Exp as Cname from T) Tab, Cname , D) [perhaps that's incorrect syntax in DAX, but DAX certainly has an equivalent table expression to the SQL subquery one] which is concatenating all the values in the single column Cname of the generated table, so it's not completely wrong/unacceptable to talk as if the scalar expression were a column name, as the explanation does. Just a bit off and may mislead people into thinking that the second parameter can only be a column name.