While both keys perform the function of identifying cases, each key plays a distinct role:
interview__id is a unique identifier most useable by machines. It will always identify cases.
interview__key is an identifier for humans. In the absence of user-created keys (e.g., region + district + household id), interview__key provides a short key that can be used by all users to talk about a case. While the interview__id is only visible in export data (and, if you pay attention, in the URL of an interview being reviewed on HQ/Supervisor), interview__key is visible to users in all roles: by Interviewer on the tablet, by Supervisor on tablet/web, and by HQ on the web and in the exported data.