What is the appropriate index architecture when forced to implement IsDeleted (soft deletes)?
The easiest approach here is to leave your keys and clustered indexes alone, and use filtered indexes for your non-clustered indexes.  

Additionally you can migrate some large tables to partitioned heaps or partitioned clustered-columnstores (SQL Server 2016+), leaving the primary key and unique indexes un-partitioned.  This would enable you to push the non-key columns for IsDeleted rows to a seperate data structure, which could additionally be compressed differently or stored on a different filegroup.

And make sure the developers use a literal instead of a parameter to filter the IsDeleted rows out. With a parameter SQL Server has to use the same query plan for both cases.

EG

SELECT ... WHERE ... AND IsDeleted=0


And not:

SELECT ... WHERE ... AND IsDeleted=@IsDeleted


Using a paramter will prevent use of filtered index, and can get you into trouble with parameter sniffing.