В проекте, над которым я сейчас работаю, интерфейсы и связанные базовые классы объединяются в сборки, которые логически разделены между функциями. Реализации этих провайдеров и классов идут внутри базовой сборки. Идея состоит в том, что люди, которые используют наш API, могут ссылаться на более или одну из библиотек API ясным и логичным образом.
Меньшие приложения не нуждаются в таком разделении. Но независимо от того, где я храню интерфейсы, я буду хранить их в том же пространстве имен, что и любые базовые классы.