Programming language used to interact with SQL Server databases
Yes, you cannot have two cascading FKs to the same table. One of the columns PrimaryId and SecondaryId can have cascading foreign key to B, but not both. As for why, well, Microsoft took a very conservative approach when they implemented cascading FKs. And maybe it was overly conservative.
I am not sure what you have in mind when you talk about INSTEAD OF triggers, but I assume that you have some workaround in mind. While I guess that is doable, a little warning: the person that comes after you, should also understand what is going on the system. A better workaround, if more boring, is simply to explicitly delete child rows on the none-cascading key.
In the system I work with now, we tend to more or less default to cascading foreign keys. But in another system I worked with for many years, we had a few of these and stuck to NO ACTION, calling for explicit deletes. Largely, this was out of habit. That system started its life before cascading FKs were introduced in SQL 2000.