I like the idea of creating smaller classes and making sure that the class is doing only what it is supposed to do. If you have multiple classes which are contributing to solve a single problem then there is no harm in putting them together in the same file.
I would not follow MS practices as they are not the BEST PRACTICES!