dyork: The height of a small cap should be equal to the x-height of the typeface. In most cases, the difference between the x-height and the height of an uppercase letter is big enough to make “fake” small caps look bad even to the casual observer. The obvious problem is the difference between stroke widths of the cap and the small cap, but there are more subtle differences as well. Most real small caps cuts have tweaked the “optical size” of the letterforms to suit the smaller size of the characters.
Unlike haruspex, I don’t really think that this is your problem. It seems to me that the correct browser implementation would be to render the small caps only if there’s an appropriate small caps font available, and revert to normal rendering otherwise. Apparently nobody is doing it this way, though…