A Microsoft API that provides programmatic access to Microsoft Advertising to manage large campaigns or to integrate your marketing with other in-house systems.
After doing some more testing on my own here, I believe that I have figured out what is causing the discrepancy.
In the SOAP API, it seems like including/excluding the CampaignType column when generating reports will have an effect on which campaign types will be present in the report output. Excluding the column causes Performance Max campaigns (and possibly other campaign types) to not be included in the report, while including the column makes it so those campaign types will be present in the output. This behavior is exclusive to the SOAP API, the REST API seems to always include all data regardless of whether the CampaignType column is used.
I have passed along my findings to Microsoft support to confirmation on this, but I am very certain that this is the root cause of the discrepancy I was experiencing in my case.