The align environment does not do what you think it should.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor} % for the guide rule
\begin{document}
\noindent\smash{\makebox[\textwidth]{\hfill\color{black!20}\vrule depth \textheight\hfill}}
First example:
\begin{align*}
a &= bbbbbbbbbbbbbb \\
c &= d
\end{align*}
\makebox[\textwidth]{%
\settowidth{\dimen0}{$\displaystyle a = bbbbbbbbbbbbbb$}%
\hrulefill
\smash{\makebox[\dimen0]{\color{red}\vrule height2cm\hrulefill\vrule height2cm}}%
\hrulefill
}
Second example:
\begin{align*}
a &= bbbbbbbbbbbbbb \\
cc &= d
\end{align*}
\makebox[\textwidth]{%
\settowidth{\dimen0}{$\displaystyle cc = bbbbbbbbbbbbbb$}%
\hrulefill
\smash{\makebox[\dimen0]{\color{red}\vrule height2cm\hrulefill\vrule height2cm}}%
\hrulefill
}
\end{document}
Don't bother with the code for producing the rules, it's irrelevant for the explanation; I just use it for showing what align does.

The gray rule marks the exact longitudinal axis of the page. The red rules mark the bounds for the align environment. You see that, normally, the entire block is horizontally centered by taking into account the whole width.
This is valid for align with a single alignment point or not so wide equations. If the equation number is added, there's no adjustment, in general.

The picture has been obtained by changing align* into align. However, if the block is so wide as to be too near to the equation number, it will be moved to the left (or to the right if numbers are on the left).
There is no typographic reason for attempting to place the alignment point at the center of the page, especially if the “right-hand side” of the equation (what's after the alignment point, actually) is long. Let's make a simulation.
This is what you'd get by centering the equals signs on the page:

This is the standard placement:

It's not the position of the alignment point on the page that concerns us, but the relative position of the alignment points with respect to each other and the overall balance of the whole thing, including the text above and below the display.
Remember also that the simple fact you're displaying some equation in a block doesn't necessarily warrant align; it does if there are relations between the equations. A lot of times we see alignments at equals signs that are unnecessary and produce very unbalanced results. Remember that you can nest align in gather for cases where groups of equations in a display need alignment, but not all of them.
When there are more alignment points, align makes blocks of “right aligned/left aligned” columns and positions them by equally dividing the blank space remaining between the blocks.
alignis basically an array with columns right-left-right-left... (see this answer of mine for a description ofaligned, which is similar). The resulting array will be centered on the line (unless of coursefleqnis used). – campa May 28 '20 at 13:56