Here is the advice in the IBM CPLEX documentation. So this pertains to CPLEX. I don't know to what extent it applies to other solvers.
First of all, indicator constraints may not be available in all situations:
Indicator Constraints in Optimization
The constraint must be linear; a quadratic constraint is not allowed to have an indicator constraint.
A lazy constraint cannot have an indicator constraint.
A user-defined cut cannot have an indicator constraint.
Only $z=0$ (zero) or $z=1$ (one) is allowed for the indicator variable because the indicator constraint implies that the indicator
variable is binary.
Best Practices with Indicator Constraints
Avoid Big M values if at all possible. If you choose to introduce Big M values in your model anyway, use the smallest possible value of
Big M because Big M values create numerical difficulties and can
introduce trickle-flow problems in node LP solutions.
Use indicator constraints instead of Big M when Big M values in the formulation cannot be reduced.
Do not introduce indicator constraints if Big M can be eliminated from your model.
Do not introduce indicator constraints if Big M is eliminated by preprocessing. Check the presolved model to determine whether Big M
has been eliminated from your model by preprocessing. In that case, do
not introduce indicator constraints for that Big M.
If valid upper bounds on continuous variables are available, use them. Bounds strengthen LP relaxations. Bounds are used in a MIP for
fixing and so forth.
Difference between Using Indicator Constraints and a Big-M Formulation
Big-M formulations are relatively straightforward, but the value of
the $M$ term needs to be chosen carefully. If $M$ is smaller than the
upper bound of $x$, this situation may cut off valid solutions. If $M$ is
too large, the model may become numerically difficult or exhibit
Indicator constraints have the advantage of avoiding these types of
problems, as they do not rely on a separate constant value. However,
they tend to have weaker relaxations during the MIP optimization, a
condition which may lead to longer solve times in a model.
Consider using the big-M form instead of indicators:
- When the big-M factor is not much larger than other coefficients in the model.
- If the big-M factor is eliminated in presolve. You can write out the presolved model to check this condition.
- If the model does not show any side effects from a big-M formulation.
- If [the solver] can not efficiently solve the model formulated with indicator constraints.
Consider using indicator constraints instead of big-M:
- When the big-M factor remains very large, relative to other coefficients in the model.
- When the big-M formulation is difficult to express, such as an if-then constraint on complex expressions.
In all cases, defining upper bound information on the continuous
variable will generally yield a much tighter formulation and nearly
always helps with performance.
I will have to defer to someone else as to how indicator constraints are handled internally in the solver, for instance in CPLEX, and to what extent SOS may or may not be involved.
Big M formulations are subject to logic "errors" due to "trickle flow". See
I will update this answer based on any answer I get to a question Are indicator constraints immune to trickle flow or other numerics-induced logic 'errors'? which I just posted on the CPLEX forum.
EDIT: Indicator Constraints in CPLEX are immune from the big M/trickle flow issue. I have placed the details, provided Ed Klotz of IBM, in a separate answer to this question.