I have to agree with you: Both on one server is not possible. The only way to make this work would be cumbersome:
Install a public and a private instance of gitorious. For private projects: Works just as before. For public projects: Push to somewhere and make the post-receive hook propagate the change to public/private.
Ugly? Hell, yes. It's nothing but a workaround.
On the other hand: You can mix GitHub and Gitorious just fine. Your client (if you use one, or the git cli) doesn't care about the hosts, so having http://myPrivateGitorious repositories next to http://github.com repositories would work fine and you gain the best of both worlds. It's the same system. You can easily push/pull/merge from one to the other, it's not like the decision to use one or the other has to be an XOR.
If self-hosted Gitorious allowed for private & public projects then I could let it face the internet and have the perfect solution. I've seen a few implementations of private projects with merge requests, but sadly the Gitorious team has largely ignored them.