I think you are addressing important points here. However, I have however solved these issues with some private extensions already.
- The Byobu setting "Specify which tag all private discussions should use" solves the tag issue for me because I only ask for one tag. Furthermore, with a little jquery I have disabled the possibility to select or deselect tags.
- The automatically assigned tag provides a separate page to view my private discussions. The link is where it should be and if you want with a little help from CSS it could look less like a normal tag.
- It's already possible not to display private messages in the full list of all discussions, but not as a preference for each user.
My real concerns relate to the storage of PMs in the regular "discussions" and "posts" tables, separated only by an "is_private" field set to 1. There are so many things that could go wrong with this layout. I remember the beginnings of Byobu, when deactivating the extension (neccessary e.g. for an update) rendered all private discussions public. Only thereafter was the "is_private" field added.
Another example: While I was experimenting with Byobu recently, I managed to make a private discussion public by simply leaving as the last participant. At that point I had thought about giving each participant the possibility to withdraw from a private discussion, including the last participant.
I had expected to make a discussion inaccessible to everyone by doing so (tantamount to deleting it), since now no one should be able to see its contents anymore. A cron job could then purge private discussions without participants. But to my dismay, the exact opposite happened. How can it be that a discussion becomes public without the explicit consent of all former participants? So as the admin I have to be extremely careful to make sure such a disaster could never happen.
A strict separation of the tables would allow me to sleep much better.