I know nothing about Oracle, but since the question was expanded to include, say, Postgres...
Some things I've personally used or seen used in Postgres that don't really exist in MySQL (AFAICT)!
- transactions and full-text search together
I know it's popular to use an external FTS since MySQL doesn't have one. Personally, I've had nothing but trouble using separate FTS solutions: if it's possible for the two data sources to get out of sync, I can guarantee that at some point they will. I could use BDB and write my own indices, too, but I don't, because I see no way in which it's better than a built-in index, and a bunch of ways in which it's worse. (OK, in one case I needed a weird custom index, and for that it's nice. If you need a weird custom FTS, then maybe Sphinx is more flexible. But I've never seen a real need for a weird custom FTS, and I'm not even sure that Sphinx is more flexible than Postgres FTS.)
- spatial queries (PostGIS)
I don't know if MySQL has an extension mechanism that allows this, but I'm pretty sure it doesn't have an extension like PostGIS. Let's say you want to query for all coffee shops within 300 meters of a park, and not within 100 meters of a landfill (given that your database has the boundaries of parks, landfills, and coffee shops). It's impressively easy with PostGIS. With MySQL, I think it would probably be a decent amount of work.
Rails people (hey, I used to be one!), especially, like to use STI and pretend that all subclasses have pretty much the same fields as the superclass. It's OK if you only have a couple subclasses or they're all very similar, but trying to map a class hierarchy to tables can get pretty crazy pretty quick. In Postgres, it's easy: make a new table that inherits from the first one, and adds its fields, just like subclassing in your programming language. A data model that actually matches my data! Not as nice as a real OODB but pretty friggin' close.
I know if you stick with InnoDB you get transactions for all data manipulation operations. Postgres also has transactions for all data definition operations. Take a common case: I need a migration to add a column, convert data from the old format to the new format, and remove an old column. In Postgres, I just do it all in one transaction, and there's no chance I'll end up with this transaction partially applied. In MySQL, it can do the data conversion step in a transaction, sure, but if it has to rollback, the new column has still been added, so you need to clean it up by hand, or write a more complex transaction to deal with that (and even then it's still not atomic in the db). Repeat every day, and enjoy the pain.
(The general theme I see here is the ability to say just what I mean, and therefore work at a higher level of abstraction. Want FTS on my data? Then create a FTS index. Want a spatial query? Then write a spatial query. Want to store subclass data? Then make a subclass table. Want a migration that's completely atomic? Then slap a transaction around it and call it a day. Sure, I can implement any of these in MySQL, but then I'm having to think about and implement and maintain that other thing, rather than just writing a single line of SQL. As a professional programmer there's nothing more valuable to me than being able to work at a higher level of abstraction, full stop.)
Now, I'm not sure if I'd say Postgres is generally "better" than MySQL -- there are certainly things that MySQL does much better and so it certainly has its uses -- but these are a few things I absolutely love about it.