Having an application in the way in some cases may impact performance and may make the firewall less transparent to the users. Application level firewalls tend to provide more detailed audit reports and tend to enforce more conservative security models than network level firewalls. Since each user has to go through the firewall, it can tend to congest the network traffic. Proxies are often used instead of router-based traffic controls, to prevent traffic from passing directly between networks. Many proxies contain extra logging or support for user authentication.
Proxy servers are application specific.
In order to support a new protocol via a proxy, a proxy must be developed for it. Its advantage is that it's easy to use, but it doesn't support the addition of authentication hooks or protocol specific logging. One other kind of firewall to mention is the Stateful Inspection Firewall. In this case the firewall observes a series of transactions to keep track of states even if the application does not. However stateful inspection methods are proprietary and have not been fully analyzed.