Photoshop, ideally, because it will change the actual image data to suit the new size.
If the image is to be reduced, you won't usually notice any difference between Quark and Photoshop, but using photoshop will result in smaller files. If you need to enlarge the image, neither package will work well, but photoshop will at least try to interpolate the missing data. If you are enlarging screen shots, or other graphics that you want to see the actual pixels, then Quark is fine.
To calculate the resolution an image should be in Photoshop, import it into Quark and size it the way you want. Now multiply the ideal resolution by the percentage enlargement/reduction in Quark. For example, if it's reduced to 60% in Quark, and you want to output at 300dpi, then 300 * 60% = 180dpi. Go into Photoshop, go to Image Size, make sure 'Resample Image' is checked, and change the resolution to 180 dpi. Update the image in Quark. Doing it this way saves you having to work out what dimensions an image should be at 300 dpi, but the result is the same.