E2EE promises that data sending between two endpoints can be decrypted by only those two endpoints. If an app offers E2EE but still has functions to retrieve private keys from users for any purposes such as for multi-device sync, is that considered acceptable as the app owner can get the private keys from the users and decrypt user messages when they need as the app resides on the user devices has the functions for retrieving user private key which could be invoked for other purposes such as for legal execution ?
Is it generally considered acceptable for app owners to be able to retrieve private keys from users when their apps offer end-to-end encryption?
No, it's not acceptable if the app providing service can actually access/read your raw keys.
As a result, the main question should actually be: are device-specific keys synced/exchanged between devices in an E2EE way, so that the app's servers only see encrypted data packages instead of raw, unencrypted keys?
The answer will depend on the individual app and how the app provider implemented things. (In the end, this is why I personally prefer open-source solutions, as they allow me to verify all the things that go on "behind the screens" in the sourcecode.)
One thing is clear: if things like key sync are not end-to-end encrypted, the app should not be advertised as having such cryptographic protection. Keys are secrets, and should be treated/handled as such.
Yet, it should be noted that there are benign apps out there that do it correctly, so there is no satisfying one-fits-all answer to this.