Evolving requirements. The typical situation for most of the startups – market situation, investors, competitors, co-founders constantly bringing in new ideas, opportunities, or challenges and the vision and all corresponding requirements may change monthly, if not weekly, which make it impossible to select a development platform that meets all these requirements from the very beginning.
Non-standard requirements. Often e-commerce applications are required to have some features that the base platform doesn’t have(e.g. non-standard product types that standard product search and checkout cannot handle, or CRM features), so it turns out to be easier to make a custom site with some of the e-commerce features Magento has rather than customize Magento by rewriting half of its original functionality.
Unique functionality. This also happens quite frequently with startups. The features the client wants to have aren’t provided by any available CMS or the frameworks isn’t provided by existing CMS and their components.
Specific software architecture. There might be requirements for certain scalability, performance, or compatibility parameters the application has to meet that there would be no other choice to create a unique architecture.