Ultimately it is an issue with Raphael.js missing some intersection points, but Raphael.Boolean.js fails when paths have collinear edges because it gets confused by the odd number of intersections.
Here is a simple example with the following paths:
var path1 = paper.path("M2,11 L74,4 L62,41 L52,34 L51,36 Z");
var path2 = paper.path("M95,68 L81,17 L48,31 Z");

Ultimately it is an issue with Raphael.js missing some intersection points, but Raphael.Boolean.js fails when paths have collinear edges because it gets confused by the odd number of intersections.
Here is a simple example with the following paths: