To understand which approach to take when developing SharePoint apps, we need to understand the alternatives and what advantaged and disadvantages are involved with each.
SharePoint apps/add-ins were introduced in order to increase the security and stability of the farm on which they were running. As opposed to farm solutions, app code is run as a separate process and on a separate domain from the rest of the farm, meaning poor code cannot lead to the entire environment crashing, and apps cannot make changes to the farm without explicit consent from users that have the rights to make those changes already.
An alternative to farm solutions, introduced in 2010, are Sandboxed Solutions. However, Sandboxed Solutions that contain custom server-side code are deprecated, and will no longer be allowed in SharePoint Online. Simple Sandboxed Solutions that provision SharePoint artifacts, such as lists, libraries, and content types, on the site where they are installed can still be used. Note that, for SharePoint Online, the community is now recommending remote provisioning of these artifacts using the Office 365 APIs.