Hold on, sorry, there were some other differences between the processing stream that gave me good alignment, and the one that gave me bad alignment, aside from the 3drefit calls. In the "good alignment" stream, I also reoriented the EPI and anatomical to both be RPI, and I cut some slices below the brain out of the anatomical, all before running 3dTshift and align_epi_anat.
For sure reorienting the EPI that early was a bad idea, as that destroyed my slice-time information without me realizing it at that time.
But my question still stands regarding what the best method is for preparing the data for alignment (anatomical to EPI alignment), while preserving the original state of the EPI data as much as possible.