When monitoring systems for their temperature, and fan speeds, what source of sensor readings is most preferred?
I can get all the motherboard readings from both, IPMI and directly from the Winbond sensor driver itself. I can get CPU readings from ACPI, or from the CPU temp driver itself. I also can get GPU readings from ACPI, and the GPU driver itself.
In re-reading your question I realize I made an assumption that is incorrect.
All of the things you list access the same hardware in different ways. You use the one that is best supported by whatever monitoring systems you have. On occasion something like a firmware update will affect how the device reports that information, but it will affect how each technology interprets the data. You should sanity check the output to validate your method.
I initially answered how you would transfer that information to a monitoring solution. There, once again, you use the method that works with your monitoring solution.
I would say that the single most common, which includes devices without a BMC at all is SNMP. SNMP OID strings however are usually not active reporters, the device has to be actively queried to update status.
If you wanted a report with more active problem reporting, then many newer (~2015) management interfaces support sending problem alerts to a Syslog aggregation server. That can parse the inbound messages and generate alerts.
Another information access control is the i2c bus, but that needs software running as a client on each individual device to query it.