As of R2007b, the help documentation on the CData property of uipushtool objects states:
"If your CData array is larger than 16 in the first or second dimension, it may be clipped or cause other undesirable effects. If the array is clipped, only the center 16-by-16 part of the array is used."
Therefore it seems that the "official" behavior for oversized icons is clipping rather than scaling. If you wish to use larger icons and scale them down to size, it seems you will have to do it manually. If you have access to the Image Processing Toolbox, you could use the IMRESIZE function, but this would create additional computational overhead every time you want to add these buttons to a figure. I would suggest rescaling your icons ahead of time in an image manipulation program like the GIMP or Photoshop, and just saving small versions of them for use in your program.
I confirm my fears that CData for uipushtool ARE NOT resized automatically. If I use as CData some image from a file, and look what is the size of CData in the icon, like: