The reason for the loop join is not the table variable. It is the subselect for the XML-output. It doesn't matter which kind of tables you take, when using the XML-output like shown in the first example there will always be a loop join like with nearly any other subselect I know.
The table variable in my case is only part of the where-condition of the outer select.