Fields API vs. fields in hook_schema
The most important advantage of using fields, rather than custom data in a custom table, is that your data has immediate integration with the rest of the system; including (but in no way limited to):


Automatic integration with Views
Potential to use EntityFieldQuerys
Fields can be managed using the standard system UI, even if built in code
Automatic integration with Features
There are many contributed widgets that can enhance the UI of a field (e.g. the Term Reference Tree widget
No need to load your custom data onto the node/entity in a load hook, the core field system does that for you
No need to define CRUD operations for your data


I'm sure there are many, many more. 

Basically, if you want fine-grained control over the operation/performance of your extra data then use a custom table. If you want the system to handle all of that for you, use a field. For what it's worth I pretty much always use a field to store any entity data these days.