You can build a queuing system with a database, but you have to do that. Some of the features and constraints of the database might even make your life harder than it has to be.
Instead, view it like that: there is a need for a queuing system and a job system. Either or both can be implemented using a database for certain concersn, but it can also be a custom implementation. It's not a great idea to mix the two things unless the operational and infrastructure costs and complexity outweigh the benefits of a clear separation.
I'm not saying that libraries like pg-boss and co. cannot sometimes replace a full queue implementation. But the tradeoffs need to be clear.
I’d like to hear why people chose Kafka over some RDBMS tables.
Kafka has specific use cases but it seems a lot of people just go "ok use Kafka here" and wait for the load that rarely comes
If your load is, say, a few hundred writes/second, stick with the database only, and it will be much simpler.
If the answer is a call to a shared database, you might as well not have RabbitMQ.