I often read about how to force push, and that all commits in the remote repository that are not pulled get lost
Not exactly: the old commits are still referenced in the git reflog
.
Even if you force push to GitHub, you can still see (as repo owner) the previous branch HEAD SHA1 which was overwritten by the new history. See "Does GitHub remember commit IDs?".
That or you have to contact GitHub support.
So my question is what reason could I have to do a force push?
Whenever you are the only one working on a branch (or on a repo, in the case of a fork), you can force push.
This is common in case of a Pull Request, where the web GUI is smart enough to update itself to take into account the new history: you can force push your own branch (again assuming you are the only one working on it) after rebasing it on top of upstream/master
(upstream being the original repo that was forked)
This is part of a triangular workflow.

The OP bpoiss adds in the comments:
VonC mentioned in his answer that the data is still present also after force push, so you can not remove sensitive information, or did I miss something?
For removing sensible information on the remote repo, you need to perform some commands on the remote server side:
$ git reflog expire --expire=now --all
$ git gc --prune=now
(source: Remove sensitive data)
That means, when pushing sensitive data to GitHub, you have to contact GitHub support.