Search didn't turn up anything obvious, so I'll just add this one here.
I've been experimenting a bit with private projects in our open Phabricator instance.
One potential problem that I see, is that it is very easy to create tasks for a private project which are open to everyone, as the "Create New Task" UI defaults to the global default. This is not only inconvenient but - given the need for human action to manually set this - is guaranteed to result in "leaks" due to tasks being created with incorrect policies.
I realize that the general case (setting the visibility when adding new projects) is probably difficult to implement and may have unfortunate side effects (what policies to use if multiple projects are added, etc).
However, for the specific case where you Create a New Task from a project view (i.e., pressing the "New Task" button from within "My Private Project"), it seems to me that it would be logical that the new task comes with the same visibility settings as the project that it is automatically tagged with.