A lot of that is due to formal constraints on subtitling as a medium: You want to display what is said when it is said (order of information) but you also have a hard limit on how much text you can reasonably ask an audience to read in a certain time frame and how much text is displayed at any one time in total. Some languages are much more efficient than others (in how much words they need to express an idea) which often leads to overly simplified translations, that cannot feasibly convey the original faithfully.
Now, for dubbing you have different constraints; what is said in the translation needs to fit the actor's mouth as well! This often leads to totally different teams doing the subs and dubs, which in turn leads to them not agreeing with each other. If it's done really badly, these teams will use different terminology even, which just results in utter audience confusion.
A lot of that is due to formal constraints on subtitling as a medium: You want to display what is said when it is said (order of information) but you also have a hard limit on how much text you can reasonably ask an audience to read in a certain time frame and how much text is displayed at any one time in total. Some languages are much more efficient than others (in how much words they need to express an idea) which often leads to overly simplified translations, that cannot feasibly convey the original faithfully.
Now, for dubbing you have different constraints; what is said in the translation needs to fit the actor's mouth as well! This often leads to totally different teams doing the subs and dubs, which in turn leads to them not agreeing with each other. If it's done really badly, these teams will use different terminology even, which just results in utter audience confusion.