How Surface Difference (3D Analyst) works
Surface Difference calculates the volumetric difference between two TINs or two terrain datasets. The second surface is subtracted from the first. The calculation is performed in the vector domain. The result is an output polygon feature class divided into areas where the first surface is above the second, below the second, and coincident with the second. Each area is attributed with the knowledge as to its "above", "below", or "same" status as well as the cubic area between the surfaces for its location. Areas where the surfaces are coincident, tagged as "same", will have a volume of 0.0.
Surface Difference works by calculating the difference in height between measurements of the two input surfaces. All the nodes and breaklines from the first input surface are compared against the surface of the second (i.e., the difference between their height and the interpolated values for them off the other surface). The same is repeated in the inverse, with the measurements of the second surface being compared against the surface of the first. All nodes and breaklines, from both, with their z-values set to the height difference, are used to create a difference surface. The zero contours on this difference surface represent the intersection between the two surfaces. The zero contours are added as breaklines to the difference surface and the resulting triangles are classified into those that are above, below, or equal to 0.0. Contiguous triangles that have the same classification are grouped into polygons, with their volumetric contributions summed, and added to the output polygon feature class.
This tool uses an approach that is based on height differentials between measurements and surfaces. It is not based on triangle to triangle intersection. Therefore, while the result is representative of the difference between both surfaces there may be discrepancies if you attempt to compare them triangle by triangle with the input TINs or terrain datasets.