This is normal, blueprint can not guarranty that object you refrence will exist at runtime so you can not refrence it in class defaults. But if you would place actor on the level you can reference other actors on that level (allowing actor linking)
For defaults you need either refrence a class (UClass* or TSubclassOf<>) and at runtime create object, soft reference (TSoftObjectPtr<>) which can softly reference to elements of level asset and have controllable invalid state if asset is missing or not loaded.
There also option t use CreateDefaultSubobject<>() in constructor, same as you do to create components in actor, which will create new object instance together with parent object, this function is not really made specifically for components. But this might not be reflected into blueprints as they not support those other then for components.