This is a proof of principle (as opposed to a fully automatic, super elegant solution). The issue is that \chemmove uses overlay, which, by definition, interrupts/discards the bounding box. However, there is, as far as I know, no way to annotate a pre-existing tikzpicture without overlay.
What one could, however, do is to see by how much some points of the overlay picture overshoot the bounding box. These points have to be chosen by the user with
\AddToBoundingBox{(<coordinate>)}
(Yes, one can make this command taking lists, if needed.) This macro determines the overshoot and, in case there is any, reports this overshoot to the aux file such that in the next compilation the bounding box gets increased accordingly. Similar tricks have been used e.g. here and here. This is the code with some additional remarks inside. It potentially may be something that helps developing a more elegant and automatic solution.
\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{calc}
\newcounter{picid}
\makeatletter
\tikzset{every picture/.append style={execute at end picture={\stepcounter{picid}
\path (current bounding box.south west) coordinate (pic-\number\value{picid}-BL)
(current bounding box.north east) coordinate (pic-\number\value{picid}-TR);
\ifcsname tikz@additional@bb@\romannumeral\value{picid}\endcsname
\edef\temp{\noexpand\path \csname tikz@additional@bb@\romannumeral\value{picid}\endcsname ;}%
\temp
\fi
}}}
\newcommand\AddToBoundingBox[1]{% measure the overshoot
\path let\p1=($#1-(pic-\number\value{picid}-TR)$),
\p2=($(pic-\number\value{picid}-BL)-#1$) in
\pgfextra{%\typeout{\x1,\y1,\x2,\y2}
\edef\temp{% add coordinate outside the bounding box in case of an overshoot
\ifdim\x1>0pt
([xshift=\x1]current bounding box.north east)
\fi
\ifdim\y1>0pt
([yshift=\y1]current bounding box.north east)
\fi
\ifdim\x2>0pt
([xshift=-\x2]current bounding box.south west)
\fi
\ifdim\y2>0pt
([yshift=-\y2]current bounding box.south west)
\fi}
% test if bounding box got increased
\pgfmathtruncatemacro{\itest}{ifthenelse(\x1<=0&&\y1<=0&&\x2<=0&&\y2<=0,0,1)}
\ifnum\itest=1 % only do something if the bounding box got increased
% we need to make sure that we remember previous additions
\ifcsname temp@tikz@additional@bb@\romannumeral\value{picid}\endcsname
\expandafter\xdef\csname temp@tikz@additional@bb@\romannumeral\value{picid}\endcsname{\csname temp@tikz@additional@bb@\romannumeral\value{picid}\endcsname \temp}
\else
\expandafter\xdef\csname temp@tikz@additional@bb@\romannumeral\value{picid}\endcsname{\temp}
\fi
\immediate\write\@mainaux{\xdef\expandafter\string\csname tikz@additional@bb@\romannumeral\value{picid}\endcsname{\csname temp@tikz@additional@bb@\romannumeral\value{picid}\endcsname}}
\fi
};}
\makeatother
\begin{document}
\noindent
Example 1: add the point in the middle of the bounding box
\schemestart
\chemfig{@{a1}A-@{b1}B}
\chemmove{
\draw(a1)..controls +(60:5mm) and +(120:5mm)..(b1) coordinate[midway] (aux);
\AddToBoundingBox{(aux)}
}
\schemestop
\noindent
Example 2: add some additional distance (and test that adding several
coordinates works)
\schemestart
\chemfig{@{a1}A-@{b1}B}
\chemmove{
\draw(a1)..controls +(60:5mm) and +(120:5mm)..(b1) coordinate[midway] (aux);
\AddToBoundingBox{([yshift=2pt]aux)}
\AddToBoundingBox{(aux)}
}
\schemestop
\noindent
Example 3: do nothing
\schemestart
\chemfig{@{a1}A-@{b1}B}
\chemmove{
\draw(a1)..controls +(60:5mm) and +(120:5mm)..(b1) coordinate[midway] (aux);
\AddToBoundingBox{(a1)}
}
\schemestop
Text text text
\end{document}

\chemmoveissuesoverlay,remember picture, where overlay interrupts the bounding box. This is what you are seeing here. It will be hard to find out what the true bounding box is, and to establish it automatically. What might be easier is to let TikZ compute the vertical space one needs to insert. – Oct 22 '19 at 12:25