And I thought about setting the default value of adjustToNewSize to true, but that seems to be unintuitive in some situations, too. For example at a tileset where you only change the texture, but not the tile subrect.
There has been a lot of discussion about it, that's why the second parameter for sf::Sprite::SetImage() was added. However I (still) agree with you that the default behaviour should be to use the full space of the new bound image.
The question is what most of the users expect to get when setting a new image. In OpenGL for example it's different, because you explicitly specify texture coordinates that don't change. But for sf::Sprite it's not so obvious, because SetSubRect() is not an elemental feature (design-wise). In my opinion it's more like "I set this image, so I want to see this image."
Also, when using SetImage() the first time, the sub rect is adjusted automagically, but when using it a second time, it isn't, which may also be confusing.
And last but not least the case where you change the image and want to keep the exact sub rect may happen not that much -- I may be wrong, let's hear what others say.
An alternative would be to check if the sub rect has been set manually and then keep it on further SetImage() calls.