В общем, судя по исходникам, three.js (начиная с toShapes: function ( isCCW, noHoles ) { )
автор не стал запариваться с иерархией контуров, и сделал просто - если контур в контуре и направление против часовой стрелки - значит отверстие, иначе новая фигура.