I don't think it's always better to use the FPGA over DAQmx. I think the FPGA can be very useful if you need to do some sort of inline processing/scaling, some custom triggering scheme, or if you want to do some closed loop control completely outside of the CPU, but if you're just going to be constantly streaming data to file (basically a headless data logger) then DAQmx would be my choice. One way of looking at it is if your FPGA code is just going to be a passthrough then you probably should just be using DAQmx.
For the communication scheme, we would need to know more about how you're going to be interacting with the cRIO. That said, I would probably avoid having the cRIO act as a Modbus slave unless your host application is the master for other Modbus slave devices and you want to treat the cRIO the same as your other slave devices.