Somebody who knows the source better than I can correct, but it looks like the output for "change" is inserted at a random position in the transaction. See
CWallet::CreateTransaction(), wallet.c:969. So, there shouldn't be any deterministic clues.
From my point of view it is a correct reading of the source but an incorrectly drawn conclusion.
Example: Assume a transaction hat the outputs X and Y. Then usually ONE is the recipient of the payment and the OTHER is the original owner of the coins. Now assume that X is a well known bitcoin address (for example a donation address mentioned here in the forum). In this case you can safely conclude that Y belongs to the original owner of the coins.