The problem with this criterion is that mutual intelligibility is not transitive, so it doesn't support an intuitive notion of sameness that one might expect. Consider some language with distinct dialects A, B, and C lying at different points on the dialect continuum. If A and B are mutually intelligible, and B and C are mutually intelligible, it is still possible that A and C are not mutually intelligible. However, this is a property we'd expect if this criterion were enough to say that A, B, and C were all dialects of the same language. In addition to being unintuitive, it also raises some tough questions, like: if they're all the same language today and the last speaker of B dies tomorrow, are A and C still dialects of the same language?
From a linguist's point of view, there's no useful distinction between a dialect and a language. It's more common to talk about "varieties", which is a more general term that includes dialects, regiolects, sociolects, idiolects, &c. Grouping of varieties is done contextually and for utility, often for the sake of convenience, and often according to some guiding principles (phylogeny in diachronic linguistics, for example, helps us to understand the historical relationships among groups).
There's some truth to the quip that a language is a dialect with an army and a navy, though: in practice, the distinction between the two is a sociopolitical one. Some people will be very upset if some outside group starts insisting that, in fact, no, you do not speak Arabic anymore, or, no, you do not speak Chinese anymore, or, no, Moldovan was never really a language. For many people, their native language is an integral part of their national identity, and it's not for outsiders to decide. It won't matter how precise and logical a definition someone comes up with, because it was never a scientific or philosophical issue to begin with. We allow social groups to self-actualize their own identities, or everyone is gonna have a bad time.