Not sure why but this works. Likely related to SceneKit internal implementation, as Sweeper suggested.
func helper_cloneGeo(geo: SCNGeometry) -> SCNGeometry { return SCNNode(geometry: geo).clone().geometry! }