Not all aspects of Shopify can be customized -- especially with the checkout workflow (eg you can only set a logo for the checkout page, but not style it). Also the non-ecommerce pages are woefully lacking in content management functionality (anything more complex than a blog is impossible without using a third-party app to store custom content in meta fields).
And writing apps yourself is not always ideal because they need to run on your own server (thus mitigating the benefit of using a hosted platform to avoid infrastructure maintenance), and any frontend modifications can only be done via JavaScript (you can't modify the outputted HTML itself, so it's a lot more difficult to make robust, performant and accessible customizations to functionality).
And writing apps yourself is not always ideal because they need to run on your own server (thus mitigating the benefit of using a hosted platform to avoid infrastructure maintenance), and any frontend modifications can only be done via JavaScript (you can't modify the outputted HTML itself, so it's a lot more difficult to make robust, performant and accessible customizations to functionality).