The 'FROM' clause defaults to Cartesian product for multiple tables. You can then specify your join conditions in the where clause, but it makes outer joins harder to write - Oracle does them with special (+) operator, but it's clumsy.
It doesn't (shouldn't) make much difference at all to the database whether you specify your join condition after the `ON` or in the `WHERE` - if it doesn't hoist `WHERE` conditions into the join clause, and potentially change the join order because of it, it's missing big optimization opportunities.
I can't imagine any reasonable way to do outer joins in a where clause.
For inner joins the grandparent is correct and it should never matter whether you use ON or a where clause.
Of course it's weird and ugly. I don't think there's anything to recommend it over ANSI join syntax.
On the topic as such, besides ON and WHERE there is also USING and NATURAL.
Som very influential db-people have argued that NATURAL should be the only supported join. Checkout the third manifesto.
ON as such allows for outer joins, something you can’t do starting with a Cartesian product. But Oracle has syntax for outer joins using WHERE if you prefer that.
Outer joins could be achieved with NVL and a suitable default value, if you don't want to do the (+) thing?
Edit: you don't get to pair all rows from one table with an all-NULL "fictional" row from the other table in a cartesian product, so the answer is no