One memory saving strategy is to reduce the size of the input datasets. This could be done by processing a single slice at a time with 3dZcutup and then 3dZcat to put the slices of 3dDeconvolve output all back together again. Often it is more convenient to take limit the box of the input dataset to a smaller dataset with 3dAutobox. Here is an example:
3dAutomask -dilate 2 -prefix dset_am dset+orig
3dAutobox -noclust -prefix dset_am_ab dset_am+orig
3dZeropad -master dset_am_ab+orig -prefix dset_ab dset+orig