If I'm wrong please correct me, but I think it is because:

 Precedence[Apply]
 Precedence[Compose]
> 620
> 670

**So that's why** `Tr[Times]` is done before `Times` is applied to the list.

What is also an answer to your question about precedences of functions. It is `Precedence`, an undocumented function.

"Good old fashioned" `[]` is safer but I really like `@`, I just have to remeber what is going to happen basing on my experiece, because no one will remember all precedences :)

In fact, sometimes I like to do `f @ ( some code )`. The more different brackets, the more transparent code is, IMO.


Just for the record. [What are some useful, undocumented Mathematica functions?][1]


----------

There is a discussion about what `@` is. In my opinion `f @ g` does not mean that there's operation `Prefix` with `f` on `g`. `Prefix` is only a syntax form(?). What is happening is:

 Compose[f, g]

That's why I've checked `Precedence` of `Compose`.

More about `Compose`: [Why there is no name...][2]


 [1]: http://mathematica.stackexchange.com/a/819/5478
 [2]: http://mathematica.stackexchange.com/questions/28778/why-there-is-no-name-for-12