In thory matmal supports brodcasting so it shouldn’t make copies of the tensor (more memory efficent).
There was a bug report filed for that recently, not sure if it was fixed.
You can time a for loop on both and see what you get. I think the timing will be the same but the memory consumption will be less for matmul (important for big matrices)