Right now, add_observed_var is implemented as part of the Solver object.
However, it would be nice to have a callback inside the ExternalPropagator. This is useful, for instance, for SMT solvers where you may want to add new variables during solving because of quantifier instantiations. CVC5 currently gets around this by passing the solver into the ExternalPropagator.
However, this is not a great solution and it is not possible if your SMT solver is written in Rust (without going into unsafe Rust). We are running into this issue