Как отслеживать состояние компонента через систему событий в Unity?
соответственно, нет точного понимания, когда именно произойдет изменение свойства Interactable 
Это твоя проблема. Изменять внутреннее состояние объекта напрямую извне нельзя. Делай обертку, которая будет вызывать ивент, когда канвасгруп становится интеракивным/не интерактивным.

Напишу тот же пример, что и на SO тебе написал.
public class SomeCanvas : MonoBehaviour
{
    public event Action<bool> ActiveStateChanged;
        
    [SerializeField] private CanvasGroup _canvasGroup;

    public void Activate()
    {
        SetActiveState(true);
    }

    public void Deactivate()
    {
        SetActiveState(false);
    }

    private void SetActiveState(bool state)
    {
        if (_canvasGroup.interactable == state) return;
        
        _canvasGroup.interactable = state;
        ActiveStateChanged?.Invoke(state);
    }
}

public class NotSomeCanvas : MonoBehaviour
{
    [SerializeField] private SomeCanvas _someCanvas;

    private void OnEnable()
    {
        _someCanvas.ActiveStateChanged += LogActiveState;
    }

    private void OnDisable()
    {
        _someCanvas.ActiveStateChanged -= LogActiveState;
    }

    private void LogActiveState(bool state)
    {
        print($"Current state - {state}");
    }
}

SomeCanvas - обертка, через него делаешь интерактивным/не интерактивным свой канвасгруп, он вызывает ивент, на ивент подписываешь нужные методы. Можешь разделить на 2 ивента Activated/Deactivated чтобы не делать проверки на false или true, как тебе удобно
Спасибо! Мысль понял) Просто конкретно в данном примере с canvas.interactable элементы ui выводит сторонний плагин,  модифицировать логику, которая делает канвасгруп интерактивным, возможности нет. Есть только возможность обращаться к _canvas.interactable и поверять текущее значение. Получается, в таких случаях, решение - только проверять в Update() ?