Custom columns can be added by end user and end user can mistake. For instance someone can add the custom column as ‘Dept’ and someone can add the column as ‘Departmentname’. Content define a document data type. For instance your invoice content type can have invoice number, invoice amount etc. Your sales content can have sales date, customer code etc.
In other words content type helps you to force organization level policies. So you can define a content type at the site level. When any user wants to create a document library he can use the appropriate content type. Let’s say the organization wants to implement a policy saying that every document should have departname and version number. So the sharepoint administrator can create a content type called as ‘CompanyContentType’ and all document libraries can use this content type.
So you can use custom columns where the column is very much specific to that document library and will not be repeated you can use the custom column. If you want to implement document level policy and fields across organization you can use content types.