Basically its like in the old days of when you bought a hard drive. You bought a 1GB drive only to find out that you can use like 950GB or so. With GPUs is similar but to a lesser extend.
Generally you can't use the entire 4GB of a 4GB GPU, there is some data or cache that the OS stores on the GDDR so you can't use a 4GB to load a DAG that is exactly 4.0GB or 3.999GB.
I think if you use Ubuntu you will get the most space because it uses maybe 50-75mb or so of GDDR, so you can mine up to 3.95GB almost. Anything higher and it won't work.
You can also remember that in Linux (at the core level and programs), MiB and MB are used. Different miners can be interpreted in different ways, the actual memory size.
Even in Windows, two different miners (LOL and Claymore) generate a DAG of different size 3.87 and 3.95 respectively.