When are Dynamic and Lexical Scoping equivalent?
If you allow one function to call another, then you have enough power to distinguish a lexically defined variable from a dynamically defined one. 

def scope {
  var x = 10
  def f() {
    return g()
  }
}
def g() {
  return x;
}
scope.f()


If x is dynamically scoped, the code returns 10. If it is lexically defined, the result is an error.

Thus if you want a language where dynamic and lexical scoping behave the same, it will be a rather weak language.