For Components, SetIsReplicatedByDefault() is the one to use at constructor time. For actors, you are supposed to set bReplicates directly.
The latter is a confusing and frankly silly implementation that skirts around issues caused by calling SetReplicates() in constructors, like adding uninitialized actors to net drivers before they’ve been fully serialized. There’s a tonne of better ways to do it, I’ve no idea why Epic chose this method.
Note that you do not need to replicate the “Inventory” pointer. It’s a default sub-object and is therefore stably named. There’s a good chance some existing blueprint serialization is overriding the value you set in the constructor. My advice would be to recreate the blueprint, or check it’s saved values.