I have done both! There are many projects that I do myself that are just learning experiences for me- I usually work through those myself in private because I have no expectation of finishing them.
There are other projects that I develop in private because I don't really want slew of "oh that already exists" comments. I find these to be pretty demotivating and generally unhelpful. I'm not too interested in "pushing boundaries", so to speak, but it's kinda annoying to me to have the solution to a problem presented on a silver platter unless I'm actively looking for it.
This is the biggest reason, though. It's a fair bit of pressure to put something on the forums- or even in public channels- because then I feel more obligated to follow through and provide consistent updates (on the flip side of the coin, this is an extremely effective way to finish more projects). As much as I would enjoy doing my personal projects full time (actually I wouldn't enjoy this very much, and I'd love to discuss this where it would be on-topic to do so), programming things that I share here is something I do when I have the time and inclination, to paraphrase ~volunteers. I try to minimize commitments and thus pressure on myself when it comes to cemetech things- it's not really a wonderful feeling to have all the pressures of normal life on top of all of the pressures related to all of my unfinished projects
Additionally, some projects I do involve secret things I can't tell you about. Shush
In response to Michael0x18- I strongly disagree with the practice of hiding the source because it's bad/sloppy/messy. If anything, these codebases are the ones I would share because they're the ones I could learn the most from having more experienced members of the community look at.