Here is 3 things I found :
I tried, and the game is able to read unencrypted pics and csv files. So you don't need to use repackBM each time you edit a picture.
In the balloon.csv file, you can easily add a balloon, if you want. You just have to add a line with the settings of your new balloon.
I found a way to center the texts in the story mode :

First, you have to create a picture with just a transparent background. Or, if you resized it, you can use data/ed/balloon_ed01.png.
Next, add it somewhere in the balloon.csv file. The offset_y should be bigger than the one of where the text is. You also must edit the filename, and choose a key (I used for example blank). The others values should be the sames. Here is what I used :
a15x3,data/system/talk/a15x3.png,250,85,0,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
empty,data/system/talk/empty.png,250,125,0,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
And in the perl file (data/script/story/reimu/stage1.pl, for example), choose a balloon you want to to center (I took the 71th line : いい加減そろそろ決着つけたい\nと思ってたし,a15x3,0,0). Split this line into 2 lines : the 1st one is displayed in the original balloon, and the 2nd one in your blank balloon :
いい加減そろそろ決着つけたい,a15x3,0,0
と思ってたし,empty,0,0
Before explaining, I must explain something else :
in a dialogue inside a pl file, there is 2 ways to wait user input (pressing Z or keeping C pressed) : You can add a line ,WaitInput (like in stage1.pl, line 72), or just add a backslash just after the balloon text (like in stage1.pl, line 64). I'm not sure, but it seems putting a backslash also clear the balloon after the user input.
If you put 2 balloons like above, without waiting any user input between them, they will be displayed simultaneously. And if there is enough space in the balloon under the text, and you put an invisible balloon so its text is just under the text of the 1st balloon, the user will think the 2 lines are in the same balloon.
Here is the same pic as above, but I put a red border on my empty.png file so it is easily understandable.

And here are my a15x3.png and empty.png files :


By the way, it seems that the game can auto-center 1 line of text. I think when there is more lines, it just auto-center the text block.
And maybe I found why you have to increase the offset x to move the text to the left. I think (in the stage 1 of reimu's story) that if reimu speaks, we have to increase the offset x to move the text to the right. But, when marisa speaks, the balloon is reversed, so maybe the offset x is reversed too.