The OnEnable/OnDisable can be fixed by moving the line
baseStats = GetComponent<BaseStats>();
to Awake(). Put this BEFORE the healthPoints assignment. By assigning it in Start(), you have a risk that something else will try to access GetHealthPoints() or GetMaxHealthPoints() and you’ll risk null reference errors.
I’m not sure that’s the cause of your mysterious health shrinking, however. The only place where we change the healthPoints.value is in the TakeDamage, and that should be spamming the console with “xxx took Damage” messages.
See if that change helps, then paste in your UI code for the health bars if that didn’t do the trick.