The problem is that sf::Transformable doesn't know the size of the entity, and even if it did, it wouldn't know when this size changes.
As for doing it in derived entities classes directly, that would be a lot of code duplication, and be confusing (setOrigin(Vector2f) is in Transformable, setOrigin(Corner) is in derived classes).
I don't see any clean design for such a function.