Should I drop a foreign key if I use a soft delete?
Keep it.  A foreign key exists primarily to ensure that the value given in the child table really does exist in the parent (foreign) table.  Cascading deletes or updates are, generally, a distant second.

That's the general case; your specific business rules may be different.