I just connected with my organization (via the Illuminated Cloud plugin) and did "Compare metadata with the server"
Although Apex code and Visualforce are the same, many profiles are a little different in my IDE and on the server - why is this?
Profile retrieval can be a bit...odd. The contents of a retrieved profile (and to a slightly lesser extent, permission set) will vary based on the other items included in the same retrieval request. To get a full profile/permission set, you must also retrieve ALL metadata that is authorized by that profile/permission set, e.g., Apex classes, Visualforce pages, objects and fields, etc.
Also, as the contents of your org evolve, some profiles may be automatically updated with new entries, e.g., if you create a new custom object or field in the Setup UI and have profiles selected for authorization during that flow, those are added to the profile as a result. Your project's local profiles may not reflect those changes until you perform a retrieval.
Additionally (to avoid using "also" again), the order of XML entries may change on retrieval relative to what you have locally. This isn't as much of an issue any longer as it used to be, but if you've hand-edited your local profile XML, it could still occur.
Finally, the contents of these XML files evolve across Salesforce seasonal releases. If you last retrieved the profile in Spring '22 and then retrieve the exact same profile in Summer '22, you may see small differences. These are generally due to new or changed features.
So taking all of this into account, you should closely example the differences in the retrieved metadata and the local metadata and determine whether those differences are relevant or not. If so, you should merge them carefully into your local metadata so that they become part of the system of record.
Hope that helps!