the one crafting the Tx needs to know the private key of all the addresses, right?
This isn't necessarily true in all cases, but in most cases with most wallets/clients it tends to be true.
So most likely, in such transactions, all the unspent output used are owned by the same person?
This depends a bit on what you mean by "owned", but in the majority of current transactions your assumption would be correct. You can't/shouldn't depend on this or assume that it is always correct, but it can be a useful assumption in many cases.
Am I right? And if I am, are there any scenario you can think of where this is not true?
The most common example would be web hosted wallets where you don't control the private keys associated with the "receiving address" that the hosting service provides you. As an example, MtGox. MtGox provides each user with a address (or addresses) that they can give out to receive bitcoins into their MtGox account. However, when the MtGox user sends bitcoins from their MtGox account, the unspent outputs that MtGox chooses to spend for the transaction are not "owned" or "controlled" directly by the user that is requesting the transaction.
It is also possible for multiple bitcoin users to combine their desired transactions into a single transaction to obscure ownership of the private keys:
Multiple users could each provide a list of the unspent outputs that they control and the destination where they want the associated bitcoins to be sent. Then one of the users could construct a single unsigned transaction that spends all the outputs from all the users and sends the value to all the desired addresses. This single transaction could then be passed around with each user adding their own signature as needed. Once all signatures have been applied, the resulting signed transaction can be broadcast into the bitcoin network. I *think* that the blockchain.info "shared send" service does this.