The SameVariableConstraint was being attached to the AccessPath by an inline TupleFilter subclass. This was causing the SPOAccessPath reference to be dragged in, which resulted in the not serializable exception.
A top-level SameVariableConstraintTupleFilter class was created to replace the inline class. The AccessPath constructor was modified to use this top-level class and thus avoid dragging in the AccessPath instance when the filter is serialized.
This issue was observed in the development branch (TERMS_REFACTOR_BRANCH). However, it seems likely that the same exception could appear in the 1.0.x release.
The changes were applied to both the 1.0.x maintenance branch and the development branch.
Committed revision r5234.