My view is:
Unit Tests Advantages:
Provide very good failure isolation
Ensure each component is fit-for-purpose before integrating
Fast
Unit Test Disadvantages:
Encourage glass-box testing as opposed to black-box testing. (ie mocks make it necessary to know what's going on inside a class, in order to test the external interface.
Can be costly to set up or support changes.
Integration Test Advantages:
Bang-for-your-buck: A small investment can provide very high test coverage
Ensures components are working together as they were intended
Encourages black-box style testing. Its not necessary to know what's going on inside a class. Just what's necessary to exercise the external API.
Integration Test Disadvantages:
Indicate only that there was a failure, and not where there was a failure.
Can be slow.
Can have real effects that need to be rolled back.
Can be difficult to put the system into the required state.