I managed to work it out; it was a syntax issue:
results = clr.Reference[DB.IntersectionResultArray](DB.IntersectionResultArray())
result = c1.Intersect(c2, results)
Although I’m still curious about why the implicit approach did not work.