Dear Graham,
Here is the simple explanation:
IsAlmostEqualTo is basically for vector comparison, not point comparison, and is mostly designed around small tolerances. The default for IsAlmostEqualTo with no tolerance input is 1e-09. At small tolerances, points and vectors are more interchangeable, so I would use the default IsAlmostEqualTo to find "equivalent" points too.
Because this is a directional comparison, not a distance one, 0.333 for the epsilon means to check if the two vectors are within a significant angular range of each other, which the example inputs actually pass. Even if the points are treated as vectors and normalized, they will still pass the comparison because of the wide epsilon permitted.
If you want to compare points with a non-tiny epsilon using the allowed distance between them, use XYZ.DistanceTo.
That is probably what Revitalizer' suggestions are based on, and so are my point and other object comparison methods in the Util.cs module of The Building Coder samples.
I hope this explains.
Cheers,