The solution should completely depend on what SharePoint farm you are using, Online or on-premise. Also, if you are using on-premise, is there a possibility that you will be shifting to the cloud soon?
Apps might be just right for the cloud
Developing an App for deploying branding elements can get kind of complex, considering the scenarios for creating Remote site provisioning events that trigger branding whenever a child site is created.
It's all possible if you are willing to take this route. If so, do check out this solution pack that was recently published by Microsoft for SharePoint online branding. It's a great eye opener and gives lot of insight.
Also note that the App world is not completely matured yet. Recently Microsoft decided to stop SharePoint Auto hosted Apps from Office 365. So, there will be still enhancements and adjustments in the App world.
A sandbox solution might just satisfy the need for many. But you need to keep in mind that Sandbox solutions with custom code are soon getting deprecated, but you are safe with solutions that just use the declarative markups. Read this blog explaining the whole situation.
This is the traditional way for developers considering the ease in development and deployment. But again, if your organization wishes to move to the cloud in the future, you will have the pain of re-engineering all these solutions.
The App solution might be good if you are already in the cloud or you are anticipating to move to the cloud soon. You might just need to do some tweaks in the future with the changes in App infrastructure.
For those who do not foresee moving to the cloud can feel safe to use the Sandbox solution to a minimum or a mix of App parts and farm deployments, whichever suits the environment.