Can you create a VM that has access to a ~4 TB volume?
Yes, as long as the particular virtualization platform supports that size drive, you can create a large (~4TB) virtual disk to be used as a single volume within the guest.
If your virtualization platform does not allow a single virtual disk to be 4 TB in size, you can create multiple virtual disks and use LVM (Linux) or Dynamic Disks (Windows) to combine multiple virtual disks into a single volume within the guest OS.
What's the catch?
Whether this is advisable is a more complicated question, and there is no straightforward answer. Simply put: "it depends." Keep in mind that the virtualization layer adds a performance hit compared to native access to the disk. Add to that the relatively slow performance of typical external hard drives, which are designed more for capacity and power efficiency than performance. You may find your guest VM to be less responsive than you'd like. But then again, if your VM is just running a file server that remains mostly resident in RAM, you probably won't have an issue.
If your guest is to be used as an interactive desktop computer, I'd put your VM on a small portable SSD, and keep the big data (if you really need that much capacity) on a separate drive--preferably a network share which you can mount directly within the VM using Windows file sharing/Samba or NFS.
To answer the question about your more specific use-case as outlined in your comment on Colyn1337's answer: yes, you can create a portable VM on an external drive that you move from machine to machine, but making the hypervisor portable is a more complicated question and may or may not be practical, or even possible, depending on your virtualization solution. And since you're planning to move the drive between Linux and Windows VMs, be sure to format the external drive with a top-level filesystem which can be read and written under both platforms (e.g., NTFS, exFAT--not FAT32, because it only supports up to 4 GB).
VMware used to have a product called VMware ACE which was intended for exactly this purpose (and with a lot of additional security features), but they discontinued ACE in 2011.
I use VMware Workstation/VMware Player and store several VMs on an SSD that I connect via a SATA hard drive docking station or the SATA-to-USB adapter from a 2.5" SeaGate GoFlex drive. Each time I start the VM on a different machine, I have to tell VMware that I moved the VM (the other option is, "I copied it"). For VMware to work properly in this scenario, I have to have VMware Workstation or Player installed on each host that will run my VM. I also have to be careful to fully shut down the VM guest instead of suspending it before moving it to another machine or even a different USB hub. For convenience, I used Windows Disk Management to assign V: to the portable SSD, and it preserves that drive letter regardless of what machine I connect it to. The only caveat is that, if I connect it to a machine which already has a V: drive (either a real volume or a mapped network drive), one of the V: drives will be hidden by the other.
You can also look vbox.me, which is a portable VM solution built on VirtualBox.