3dDespike uses a dilated automask by default. You can turn this off if you want and mask the dataset separately as you would like. You can count the number of non-zero voxels in the spikiness dataset to get the number of voxels in the default mask. Count the number of voxels that exceed the limit, as you suggested, on the spikesum dataset.
set total = `3dBrickStat -count -non-zero spikiness+orig'[0]'`
set badvoxels = `3dBrickStat -count -non-zero spikesum+orig`
set percent = `ccalc "100 * $badvoxels / $total"`
echo $badvoxels $total $percent
35704 2099405 1.700672
echo # badvoxels total percent
# badvoxels total percent
echo $badvoxels $total $percent
35704 2099405 1.700672