It has improved a lot. In the late 1990s it was decidedly behind the scripting languages of the time, and that's partly what I was referring to.
And, the weird lack-of-speed issues. It used to be that you could implement a matrix multiply, in an m-file, that would be faster than the builtin *. I benchmarked this myself.
(If you ask me, R/SPLUS is the inelegant language, especially when doing serious matrix -- yuck! But it's trendy....)
Matlab is a lot like SQL -- people love to hate on it because it isn't perfect and they know it really well (because it is ubiquitous and pragmatic).