I think online, of course the side which checkmates first wins.
And OTB, I think this is the same - the case of a draw because of two simultaneous checkmates would be only for cases in which the first checkmate has not been clearly noticed before the second checkmate happened, so that it becomes unclear to tell which mate was first.
So I would imagine that if you call "mate!" when you give mate yourself, it will be easiest to tell that it is faster than the "mate!" from the other side a few seconds later. (Just as calling "time!" is the way to be first as compared to a checkmate on the board - if your opponent's flag has fallen before he checkmates you.)
This is how I would think that the order of "which checkmate was first" can be determined OTB.
However I do not know about the detailed official bughouse rules for this, or possibly which local versions of them will make which official difference in detail.
Yesterday, we had a situation OTB where I checkmated my opponent sacking a Q, but my partner got mated with that Q. Initially my partner's opponent put it on one square where it would have been m2, but he didn't finish the move. Then after few seconds he noticed a checkmate in 1 on another square and put the Q there checkmating my partner. It took maybe 3-4 seconds for his last move. So, my actual question is how much time does one can take for his last move when his partner has just been checkmated. Can I sit for all my remaining time searching for m1 and if I find one, will it be a draw? Will it still count as "both games finish at the same time"