Flexible schema is certainly a benefit for some use cases and there is no requirement for documents in a given collection to have the same fields.
For example, a content management system might have a "content" collection where all documents have some common metadata (author, title, post date, ...) and differing fields by content type (blog, page, poll, ..). In this case the documents in the collection are still related and there will be some benefit in indexes that might apply to different document types within the same collection. This enables use cases like "find me all content created by a given author" in a single query. If you want to index fields that may not be present in all documents (eg. a "tags" field only applicable to blog posts) you should consider using a sparse index (
http://docs.mongodb.org/manual/core/index-sparse/).
It generally doesn't make sense to have a collection mixing documents with entirely distinct fields. For example, adding "user" documents (name, email, ...) to the "content" collection described above. As Scott noted, your application typically needs some context to interpret documents so a single collection with mixed types can add overhead in both code & storage. If you have to add an explicit "type" field as a hint for how to interpret the documents you would probably want that field indexed as well; if you used separate collections per type, the collection name already provides that hint.
Regards,
Stephen