.bash_profile is only sourced by bash on login shells. Any desktop environment is not a login shell. In bash it is NOT intended that .bash_profile or .profile get sourced when you open a Terminal window (in Linux, where a Terminal does not spawn a login shell).
So how and when are those files sourced? How would you solve this, for instance, in Xorg where .profile is also not sourced? I know this is not Linux, but I wanted to understand how other desktop environments deal with this.
On Xorg your .xsessionrc should actually source your .profile, because this file is sourced only once when your desktop launches. So this is the preferred solution, because you don't source your .profile unnecessary times.
With this it is also clear that .profile is intended as a place, where you define your persistent variables and they will probably never change and still propagate down to your terminal instances. Changing .profile would require you to relog your session.
So for Aqua (the desktop environment of macOS) it is only logical to do the same, but there is no equivalent to .xsessionrc. That's probably the reason why MacOS sources .zprofile when launching a terminal with zsh. It hasn't been sourced on the actual login of Aqua, so new Terminal windows spawn a login shell instead.
So, all you really have to do is change the default shell. My guess is that you just setup your Terminal to open bash via initial command. But this will not spawn a login shell and thus only .bashrc is sourced.
Just do chsh -s /bin/bash and reopen your Terminal. Now it will attempt to load the .bash_profile and if its missing, it will source the .profile. Please note that it, however, will not source .bashrc on login shells, so you want to put this at the end of your .bash_profile:
test ! -s "$HOME/.bashrc" || \. "$HOME/.bashrc"
Now having a .bash_profile will cause bash not to source .profile, so put also this in the top of your .bash_profile:
test ! -s "$HOME/.profile" || \. "$HOME/.profile"
I consider this to be the optimal solution, because is behaves like Apple decided it to behave for zsh. Login shells do spawn with Terminals and the desktop environment has nothing to source for the entire session. Other unix based distributions don't spawn login shells in their Terminals, but they offer a way to source something when the desktop environment launches.
It's not coherent, but it's important to understand the nuances. When you know where to put what and how to deal with it, you can essentially make a portable configuration. At least that's my motivation to switch back to bash. zsh is not the default shell for Linux distributions.