I’ve been having this conversation with a couple of people recently…
Straight out of the gate, let me say that “FACT” is a problematic term. People will use it as a precise descriptor, not realising that what they refer to as FACT and what somebody else refers to as FACT are “in fact” () two different things. This is borne out in the literature also, not just in conversation.
tckgen algorithm fact
:

Operates on precalculated fixels, but does not use the fixel directory format: fixels are stored as N sets of XYZ triplets in each voxel, where N is the maximum number of fixels in any voxel in the image (the number of volumes in the input 4D image is therefore 3N).

Does not perform subvoxel interpolation. How do you interpolate in between voxels when different voxels may have different numbers of fixels?
(Admittedly, in the specific use case where N=1, it is then technically possible to perform subvoxel interpolation using the directions stored in the surrounding voxels, as long as antipodal symmetry is accounted for; this just isn’t currently implemented)
tckgen algorithm tensor_det
:

Operates on raw DWI data.

Performs subvoxel interpolation on the DWI data; the tensor model is then fit to the interpolated DWI data at each streamline vertex in order to calculate the first eigenvector (for direction) and FA (for termination).
Rob