For those who have

Parent
 has_many :children

Child

Can there be any reason an overseas key on Child (to Parent) along with a corresponding belongs_to :parent is probably not desirable?

When, when, can you not need your son or daughter to have the ability to access its parent?

It is a trade-off. The typical argument against foreign secrets would be that the index for any foreign key incurs some performance overhead on place/update/remove. As with every index.

But a catalog also gives significant advantage whenever you search via that column.

SELECT * FROM Child WHERE parent_id = :id

Also don't underestimate the overhead of trying to find orphaned children and cleaning bollixed references, what are inevitable results of omitting foreign key constraints.

-- Typical chore: searching for orphaned child rows.

SELECT c.* FROM Child c LEFT OUTER JOIN Parent p 
  ON (c.parent_id = p.parent_id) 
WHERE p.parent_id IS NULL;

You will find several database designs that you can't use foreign secrets, for example Polymorphic Associations or Entity-Attribute-Value. However these designs are anti-designs themselves.

Performance. There's an expense when placing a young child record to find out if there's a parent or gaurdian record. You are able to still access parents record (presuming you've got a parentID column within the child table, just no referential integrity).