ok, quick stab
Mirroring is basically log shipping as close to real time as they can get.
Advantages:
1. You have a standby that can be used for immediate transparent fail over. (you would need to redirect clients to new server with log shipping or rename box) automatic fail over.
2. You can create a sql readonly sql snapshot against the passive node and query it.
Disadvantages:
1. overhead to mirror, versus transaction logs.
2. mirroring, mirrors bad data. e.g. user breaks something..this is replicated over
3.only committed transactions replicated in mirroring