" nanite doesn't fit the definition of a proxy (replacing data with another often simpler representation)"
But it does, at any one point in a frame a 1million +polygon model with 2 million or more verts will be possibly 900 Polys and about 1500 verts, this is a reconfiguration and a simplification of the original data. In this case quite literally.
" nor is it tessellation (adding/interprolating data that isn't there"
Again, tessellation is a mathematics term and it means to create or fill a surface with multiple shapes to fill the same space/silhouette. Then what happens with nanite is it constantly 'adapts' the tessellation to create a close as visual view of the base object with the least amount of verts/tris as possible. Adaptively tessellating the inner surface at all times, which you can quite clearly see in the visualiser and even count them as they change.
"Nanite is just sampling data that is there and is the true representation of the object. Not a proxy and not tessellation."
Nanite is sampling from the source model verts/objects and creating a compressed representation of that at all times but using (most likely) a complexity based compression (As in Data science ranges of data can be compressed easier/better the less complex they are and this is likely why it only supports rigid body models). Ala at any one frame to the next it will be a Simpler/reduced/smaller model of the base model unless big enough to require all Verts/Tris i.e. a Proxy representation of the huge source import.
Think of it like this, if it rendered all the polygons of each imported model at all times (a full data target no reductions) it simply would not run at playable frame-rates, it has to simplify the model on the fly and is likely using a something as described above to manage against the verts and reduce this with a compression technique to represent it.