One of the things that motivates prohibition of alcohol, drugs, speeding, and similar behavioral issues is public health, as well as crime. It costs money to rehabilitate addicts, speeding kills, and many violent crimes are committed while under the influence.
In most cases, there’s a solution to the problem. The source is the German speed limit law; although in Germany there’s no speed limit on autobahns, driving over the advisory limit of 130 km/h results in partial liability for damages caused in case there’s an accident.
Imitating that, it’s possible to rule, for instance, that alcohol, marijuana, and hashish may be legally consumed by people over 14, but a) being under the influence is not a defense or a mitigating circumstance to a crime unless the perpetrator was drugged without his knowledge or consent, and b) any juvenile committing a crime while under the influence is to be tried as an adult.
Since part b) may be too onerous in some cases, it might make sense to have a limit to what counts as “under the influence,” just as with maximum permissible blood alcohol levels while driving. For example, anything over 0.05 might be considered as under the influence for crime purposes, and anything over 0 could be considered as under the influence for traffic accident liability purposes.
With drugs it’s harder to have hard limits, since it’s a lot harder to test for pot than for booze, but a reasonable behavioral standard – “he looks stoned” – could be a substitute for blood alcohol levels.