What are the reasons for NOT doing it like it's done in the original APIs?
Because it is not intuitive. I understand that we might not be able to do it differently, however from a user point of view this can be very confusing. For example, one has to understand that
w1.setClipboardText(t1); w2.setClipboardText(t2); will result in t2 being stored in the clipboard, owned by w2. t1 is lost, it is not stored in w1.
The clipboard is a shared resource but since we make it member of windows, we can give the false impression that each window has its own clipboard data. If we do it this way, we must think about an API that reflects the behaviour better. Something like sf::Clipboard::setText(t1, w1); may be slightly better, for example. It emphasizes the clipboard, the data, and make the window argument less important, even though it remains mandatory.
A dedicated sf::Clipboard class can also be a better option to avoid bloating sf::Window with a lot of clipboard-specific functions. We could then think about a system to allow pluging "handlers" for MIME types other than plain text, this way sfml-graphics could add (in an unintrusive way) support for image formats, for example. Users can also support more specific types.
sf::Clipboard::getData<sf::Image>();
--> would call sf::Image clipboardHandler(const char*);
Just an idea.