I'm 90% sure this is because Qualcomm won't give out the source to various drivers. Instead you get a binary blob to deal with which makes the interface with other parts of the system untenable over time.
You are (mostly) correct. Either qcom doesn't give you blob updates (sometimes) or they don't update vendor/qcom/proprietary for new releases (most of the time). Partially on qcom, partially on OEMs.