Third cause, less common but worth checking because it is invisible: not enough fat, and the related habit of skimping on the onion stage.
Most of the aromatic compounds in spices are fat-soluble. In a dish where the fat has been reduced for health reasons, there is less to dissolve them into and less to carry them, and the result tastes thin in a way that no amount of spice fixes. The same goes for a base where the onions were softened for five minutes instead of properly browned — that browning is a large part of the depth people are missing when they say a curry tastes like it is missing something.
Neither is exciting advice. But if you are following recipes accurately and getting a consistently muted result, the two steps most likely to have been shortened are the onion base and the fat.