No, I think that if your classes are logically very different just with exposing a common interface, I would agree that separate classes is a (far) better way to go. Even if some are the same, I think you would have a powerful intellectual argument for keeping them separate when you have other classes that are different, it will aid clarity, and therefore maintenance.

As an aside, you mention ... either of these work-arounds will require more maintenance and requires more "hard coding" than I would like ... What is this hard-coding, and would it be eased if you stored that in a data worksheet and retrived it dynamically?