Does the UFUNCTION meta tag ‘BlueprintProtected’ not do what you need?
I personally don’t think private events are a good idea, and it also breaks convention. Having a ‘Private’ event that can then be accessed in BP isn’t really ‘private’ - since inherited classes are not supposed to be able to directly access them.
Then again, BP isn’t really known for sticking to programming conventions so wth…