L'effetto collaterale che denunci è dovuto al fatto che la posizione assunta da un pulsante dipende innanzitutto dalla sua posizione espressa dalle proprietà Left e Top, più che dalla posizione di inserimento.

Se ti limiti a creare i ToolButton dinamicamente senza definire il valore della proprietà Left, ciascun pulsante assumerà la posizione ideale per la coordinata 0 (zero), che è il valore predefinito di Left, pertanto verrà messo all'inizio, e così via per tutti gli altri pulsanti.

L'alternativa che hai è quella di generare i pulsanti in ordine inverso oppure attribuire un valore di Left alla proprietà che sia sufficientemente grande per garantire che il pulsante venga posto all'estrema destra dei pulsanti esistenti, indipendentemente dal loro numero.

Ad esempio, potresti definire la proprietà Left attribuendole questa espressione:
codice:
ToolButton.Left := (ToolBar.ButtonCount * ToolBar.ButtonWidth);
In questo modo, garantirai che il pulsante sia posizionato all'estrema destra, anche se addirittura la toolbar non dovesse essere completamente visibile, ad esempio perchè troncata dalla finestra di dimensioni più ridotte rispetto ad essa.

Spero di averti chiarito la problematica.

Ciao!