A row vector times a column vector with .* used to be an error. Since R2016b it isn't. With a = [1 2 3] and b = [1; 2; 3], a .* b is a 3 by 3 matrix of every pairwise product, and no warning.
I had a column where I thought I had a row. The old behaviour would have stopped me right there. The new behaviour quietly fed a matrix into sum, which added down the columns and returned a row of three numbers. Plausible numbers. Wrong ones.
Implicit expansion is fine when you mean it. Centering every column with X - mean(X) and no bsxfun is genuinely nicer. But the rule is symmetric, so any dimension of size one stretches, and a vector with the wrong orientation is the most common size-one dimension there is.
Now I check size at function entry with an arguments block and stop treating orientation as cosmetic. Annoying. Cheaper than finding it in a plot.