Your site can be created with only as much code as it needs for the functionality you want. For a simple site, writing custom code can be easier than installing and customizing a content management system.
You can add any kind of functionality your site, not being limited to just that available in ready-made CMS modules.
Well-documented custom code can be much simpler and easier to modify than CMS code, particularly for the programmers who wrote it.
Well-programmed custom code will run faster than CMS code with the same functionality because it doesn't have all the overhead code.
You can create much better documentation for custom code, than that which comes with a CMS, and it is specific to your installation.
You will understand all aspects of how your site is programmed (or at least your programmers will). With a CMS, that will probably not be the case.
Custom code can be updated to respond to changes in technology at any time. CMS code cannot.
Different pages and sections of your site can have completely different styles with custom programming. With a CMS, they cannot.
If a consistent layout and appearance for the entire site is desired, this is easy to accomplish with custom code through the use of templates and CSS stylesheets.
You own the code (although you may not necessarily; see the conclusion of this article).
Custom code can be expensive.
A custom site can take a long time to build.
Custom code is more likely to have bugs.
Updates and improvements to custom code cost money (unless you do it yourself).
Newly hired programmers will not have had any previous experience with your code, and it will probably take them a while to become familiar with it.
It is never certain that new custom code will work properly live until it is tested under maximum load by real users. CMS code has already undergone such testing.
Inexpertly written code can have security weaknesses.
Custom code that has been worked on by different programmers over a period of time can develop inconsistencies and documentation problems, and therefore becomes harder to modify and maintain.
Migrating custom code to a different server might be more difficult because it lacks scripts that automatically create the databases and perform the set up, such as those boasted by a CMS.
Different pages created by different programmers can have different layouts and appearances, making your site appear uncoordinated and inconsistent. This will not happen with a CMS.