org-babel-uppercase-example-markers says whether to insert BEGIN_SRC or begin_src.

org-babel-demarcate-block doesn't respect this setting:
makes this check

(lower-case-p (and block
  (let (case-fold-search)
    (string-match-p "#\\+begin_src" block)))))

which sets  lower-case-p only if it's inside an existing lowercase block (i.e. when splitting a block).
Otherwise (when demarcating the region) it goes with uppercase.