It is somewhat missing the point to talk about how Dot fails as matrix multiplication. The point of Dot is that it is a tensor operation and that it sometimes corresponds to matrix multiplication. In terms of tensor indices, Dot contracts the right-most index of the first entry with the left-most index of the second. Using Part for indices we have for a tensor of rank p+1 and a tensor of rank q+1 then Dot gives a tensor of rank p+q.
(T.U)[[i1,i2,...,ip,j1,j2,...,jq]]=Sum[T[[i1, i2, ..., ip, k]] U[[k, j1, j2, ..., jq]], {k, 1, n}]
It is typical in Mathematica to define functions that are as general as they can reasonably be; Dot is a tensor generalization of matrix multiplication.