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.