In order to be able to store it all the data needs to have been loaded into RAM and if you don't have enough RAM that is a limit one can easily reach with large datasets.
But for a QVD to be created all the data one wishes to store in it has to held in RAM via the load script. People do on occasion run out of RAM to store the data and thus this in practice becomes the limiting factor size wise to creating a QVD.
There is though a limitation on the number of unique values that can be held in a single field, a touch over a billion I think but that may have increased as new versions of Qlik are released. But that is a limit within the QIX Engine's Symbol Tables / Bit Mapped Pointers and not QVD Files.
Thanks for your responses. To bypass this training issue I coded the script to load the files in and it did not have a problem. I presume a scripted load performs the action differently than being held in memory (as comments stated) on a drop in (presumably for a user to modify on load). I modified the load requirements afterwards.