As Oshyan mentioned theres many things that can be loading into memory. You have to remember terragen needs access to more memory then just the renderer. It has its entire ui, anything you load in, etc.
Also are you running the /3gb switch (though that isn't very wise considering your max is 3gb)? If not 2048 is the LIMIT of terragen's access, when it still has tons of other pieces that need memory. So you need to approach it more like:
2048 - (memory terragen ui is currently taken) - (chunk of memory for objects etc) - a lil more just incase giving a buffer = safe subdiv cache.
And even if you use the /3gb switch, with only 3 gigs of ram I don't think it really does anything as it still will reserve 1 gig for kernel before giving ram to a program - which would only be 2 gb which wouldn't make the switch do anything.
One way to save yourself a little memory, is if you have the paid version you can run the render with nothing up by console mode, which will give you a few more megs the ui usually would be taking (i think, would need to see).