Since the introduction of the solution framework in CRM 2011 (and now Dynamics365), I have not customized the default solution and find no value in doing so going forward.
Apart from their deployment and product shipping functionality, solutions provide a container where I can specifically look at what I am customizing and am working on as it pertains to my own entities. Whether it is an unmanaged solution in Production or Development (hopefully not in Production), at the very least I have a container that takes me two minutes to create that nicely encapsulates all the changes I have made.
With the Default Solution, I see the world, everything that is in it and everything that is a part of it. If I were to step away from this solution for a month or two and then come back to it, I would have to think hard about what I had modified and where.
And this is problem the worst part about the default solution is that it allows these changes to be introduced into a Production environment without anyone but that Administrator knowing what, when and where the change was made. I’ve been in a few environments where we have worked on a solution, tested it and stamped it – only to have users complain that they are missing functionality from the latest release because there was a conflict with the default solution.
Even as a single developer on a small Dynamics system; take the time, plan for the growth of your solution and encapsulate your code into unmanaged solution at the very least.
You’ll be that much happier for it when your system starts to scale and grow.