Yes, it is needed. Images by default generate inline boxes. Inline boxes are by default aligned so that the text baselines line up. An image doesn't have a baseline, so the bottom of the image box will align against the text baseline of the cell. The baseline is always a few pixels above the bottom of the cell box, to leave room for the descenders of lowercase letters like 'g' and 'y'.
Therefore, there will be a gap between the bottom of the image and the bottom of the cell if you use the default settings. If you don't want the gap you must tell the browser to align the image to the bottom of the cell (or use
display:block to make it generate a block-level box instead).
The height of your table cell is just a minimum height. If the content requires more space, the cell will expand. And your image needed 25px + a few pixels.