Bulk API has low limits - 10k batches over a 24-hour period with 10k records per batch. While it's certainly possible to use Bulk API to accomplish an export of a large dataset, you'll be doing a lot of work on managing the chunking of the dataset, queuing the jobs, making sure the jobs complete and so on. The Data Loader is a better out of the box tool as it does a lot of these tasks for you.
Calling a REST API may run into a number of limitations. Whether these limitations will be a problem for you depends on the volume of changes to your data. Change Data Capture is a Salesforce-recommended approach for capturing these types of changes. Salesforce is moving toward event-driven architecture in a number of areas, this is one of them.
Another architectural alternative to loading the records from external system into Salesforce and then capturing the changes is to...not load them at all. You can keep the records in the external system and use the External Objects feature to make the relevant data be available in Salesforce "on the fly". External Objects is based on OData specification and implementing that will likely require middleware but it might be cheaper to maintain in the long run. Salesforce ships some connectors to popular 3rd party apps.