Seems a bit strange to me to routinely have stuff that’s inaccessible in C++ be accessible via BP?
Exactly. Actually there is a third option BlueprintGetter as discussed in a related thread https://forums.unrealengine.com/t/why-are-blueprintgetter-not-visible/579329.
What I usually see in tutorals is the AllowPrivateAccess option. However, to me this seems more like a workaround. Shouldn’t be made more heavy use of BlueprintGetter and BlueprintSetter? What is the best coding practice?