Really nice use of the symbols indeed, I like that!
The only thing that bugs me a bit is the added boilerplate and the small decrease in readability. I still prefer the convention of prefixing a private method/attribute by an underscore. Yes it’s far less “secure”, but I find this security to be quite irrelevant in the JS world. Everyone can still add a method to your classes, or reassign your symbols. You could try to make everything a lot harder, but at the expense of so much boilerplate. That’s not just in the nature of JS (but it’s just my opinion here). However I really agree with you on the fact that it’s tremendously important to differentiate the public API from the private stuff, at least visually.