Something I've found challenging is the inconsistency between babel languages. It makes it difficult for a babel user to get a source block to do what they want, or for a babel developer to even know what correct behavior is.
I'm not sure if anything can be done since changes will likely break existing behavior, but it's good to at least know what the rule is and where the exceptions to the rule are. To that end I started a page on worg [1] to document current behavior for actions taken across babel languages. [1] https://orgmode.org/worg/org-contrib/babel/languages/lang-compat.html