I'm generating 4 NTLM len8 tables, and they'll be, combined, around 1.6TB. The plan is to sell them on a 2TB external drive.
As far as the generate program, it doesn't start if the number of chains is too high... it loads up, figures out it can't allocate enough GPU memory, and quits. It's the easiest, most straightforward way I can come up with. Adding a sanity check to tell you this a fraction of a second earlier is just wasting code space.
Len 2 000 000 chains: Per hash, you're looking at about 30 minutes per hash of candidate hash generation... with a GTX580. Pass.
Disk is cheap. As long as things fit on a 2TB external drive (actually, I'm happy if only one table per drive fits in the future with larger tables), the table size is fine. IMO.