As you are rightly assuming, using two separate applications would complicate things. There will be duplicate accounts in IIQ for each target account.
IMO, if the API are not that complex then JDBC connector would be better choice for aggregation and provisioning rules to call API.
Custom connector make sense if the API are complex and need special handling and you want to keep IIQ side of onboarding clean and move the complexity to custom connector
The recommended approach would be to use JDBC connector and use APIs to perform Create , Update and Delete Operations in Operation specific rules in JDBC
So you might want to configure two apps: one for aggregation and webservice one for provisioning. This type of integration called as Dual Channel or Mixed Connector.
Use a single JDBC Application for everything β aggregation and provisioning both managed under one application. Avoid creating a separate Web Services connector.
Aggregation via JDBC
Use JDBC connector purely for account and group/entitlement aggregation
Configure separate SQL queries for account aggregation and group aggregation
Since access is read-only, JDBC is perfectly suited and no workarounds needed
Enable delta aggregation if your queries support filtering by last modified date to avoid full table scans every time
Provisioning via REST APIs
Attach a ProvisioningRule directly to the JDBC application
This rule intercepts all provisioning operations and routes them to your REST APIs
The account identifier returned by aggregation must match the identifier used by the API. Aggregation and provisioning are independent operations in SailPoint. A common design is to use JDBC for aggregation because database reads are efficient, while provisioning is performed through application APIs to ensure business rules, auditing, and validations are executed. This hybrid approach is widely used when the target application stores data in a database but exposes supported APIs for account management.
I had a similar scenario before, where we used the out-of-the-box (OOTB) connector for aggregation and APIs for provisioning. This link should be helpful for your use case.
I also have a question: what is preventing you from using APIs for both aggregation and provisioning?