Edit: Can’t speak much for MSSQL and DB2, but there are lots of similar problems in the Oracle world too, sometimes due to an app design that works against the intended use of the DB/optimizer, sometimes due to a database optimizer bug and sometimes just due to the complexity of estimating the optimal plan based on limited statistical summaries of the “shape of your data” and expectation that the optimization won’t take longer than a few milliseconds.
And no, hints are not always the solution. Sometimes they even are the culprit.
If I had a wish for Postgres, I'd rather have something like SQL profiles (or similar) where you can register an alternative plan with an existing query, not hints. Very often a full deployment in order to change a single SQL isn't an option.
that said, I'd still much rather spend my days inside Postgres than inside oracle.