If MainStage's (main) clock is running Ultrabeat runs synchronised to it, so UB will start wherever the main clock is when you press play.
Simple solution.... do you need the MS clock to be running for any reason? If no, make sure it is stopped.
Hang on a moment..... starting a Playback plug starts MS main clock....
Ultrabeat runs in sync with the Mainstage main clock if the clock is running (hence your observation of it starting mid-bar).
If the clock is stopped, starting a Playback also starts the main clock. Stopping a Playback does not stop the main clock, so the next time you trigger a Playback & UB, UB will start wherever the clock is.
You could try creating an additional mapping of your Start/Stop button:
As well as Playback and UB, map it to Actions:Play/Stop (This works the main clock).
Note that starting the main clock can cause a CPU glitch??
Alternatively, you could use a second (grouped) Playback which just plays a looped click?
I'm currently using UB as my click track. I created a custom template in UB and imported my click samples. I do not set up UB at concert level but instead set up UB at each one of my SETS level. I set the tempo and time signature under each SET.
I then map a button to ACTIONS>PLAY/STOP not to CLICK(name of channel strip)>ULTRABEAT (Drum Synth)>SEQUENCER PLAY/STOP. This allows me to stop and start the click track and for the drummer to count the song off whenever he feels like.
I then use PLAYBACK to play my backing tracks in time with the click. I map a button for PLAYBACK to NAME OF PLAYBACK TRACK>PLAYBACK>TRANSPORT>PLAY/STOP (From Start).
Under my PLAYBACK options I set SNAP TO>BEAT and PLAY FROM>CURRENT POSITION.
The only problem I've found with this is that if you start the PLAYBACK before the UB click it will turn on the UB click. Other than that it has been working well for me.
Also, add a button mapped to PANIC somewhere in your setup so you can cease any/all midi/tracks at anytime.