The way it can be done is if all data is initially encrypted when stored on blockchain. Then user can choose to make it visible (decrypted) to all users, select users, select communities, etc in the settings. In a similar manner user can also authorize UIs or revoke authorization from UIs to display the data.
P.S. We already have a similar function with encrypted memos.
RE: "Why in the world would I want my tweets immutable?" - A Case for Censorship Resistant Social Media