SSMULT on the File Exchange is now the basis for the built-in sparse matrix times sparse matrix in MATLAB 7.6 (R2008a). So the memory management issues addressed by this function are gone; MATLAB now allocates only what is necessary.
The SSMULT function on the File Exchange computes the number of nonzeros in C=A*B prior to computing C, and thus uses less memory than this function (if you guess nnz(C) wrong). This function requires you to know nnz(C). In spite of this, SSMULT is typically 2 to 3 times faster than this function, even when this function is given nnz(C) exactly. SSMULT also handles the case when A and/or B are complex. SSMULT is also faster and more memory efficient than C=A*B in MATLAB.
The mex_amup function is not well documented, either. It includes no comments at all. It's for this reason, mainly, that I rate it as "fair".