From an indexer standpoint, contract calls should always emit events of submessages (contracts calling into x/modules) by default.
If a contract does not choose to emit the ones received from submessages reply, events may be permanently lost and never queryable which is not ideal from an indexing standpoint.