My guess would be that the Brep.CreateBooleanIntersection method taking two sets as input did not exist when the component was created, and thus it uses another strategy to loop through breps and cutters that fails in some situations.
Because this simple line of code in a C# script works both ways
private void RunScript(List<Brep> x, List<Brep> y, ref object A)
{
A = Brep.CreateBooleanIntersection(x, y, Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance);
}