Frazzled Outlook for iOS does not require an iCloud account for contact export. The prompt is somewhat misleading (mentioned here - https://techcommunity.microsoft.com/t5/Intune-Customer-Success/Support-Tip-Enabling-Outlook-iOS-Contact-Sync-with-iOS12-MDM/ba-p/298453).
Outlook for iOS requires a contact container to exist in order to sync contacts into the native app. When you enable save contacts we attempt a read action, if that fails (either because Outlook has no capability to read due to MDM controls, or because there exists no container in which to read from), Outlook will prompt the user to enable iCloud sync for Contacts – this is because Outlook has no capability to create a container and iCloud sync will create one (iOS only supports three types of https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.apple.com%2Fdocumentation%2Fcontacts%2Fcncontainertype&data=02%7C01%7Crosssmi%40exchange.microsoft.com%7C7d78ae3f81064f4da16608d6b9352759%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636900035324145609&sdata=vejkimOFj2ZOi2LH%2FvdonJLVBB5kEtHICizIZTdGlhY%3D&reserved=0 – local, Exchange, cardDAV – from their names you probably understand how they get created – Exchange is an EAS profile).
Since you've deployed supervised devices, it makes sense that you're seeing this prompt.
As for CallKit, it would provide caller-ID for phone numbers found within Outlook, that's it. If users want a complete end-to-end solution for all scenarios (e.g., text messaging), users will only get that by having the contact in the local contacts app, which means they are creating contacts to get that ease of use capability.