I've been doing upgrades to test a lot of the EAP versions of TC 2. It takes a little while to update a new distribution to include the changes made to the previous one. You've come a long way in simplifying this, the most notable being that you store connection information in ~/.BuildServer now. But the memory settings aren't part of this.
It would be nice to be able to override the JVM startup parameters for both build agents and the server from outside the scripts themselves (and independently between the two) so that I wouldn't need to change the scripts by hand each time.
It looks like you are doing this a bit, with LAUNCHER_OPTS for buildAgent, but I don't see the equivalent for the server. Also, I think it would be worth breaking out just the memory opts as they are going to be the most likely to change. So something like:
if [ "$AGENT_MEM_OPTS" = "" ]; then
if [ "$LAUNCHER_OPTS" = "" ]; then
LAUNCHER_OPTS="-ea $AGENT_MEM_OPTS -Dteamcity_logs=$LOG_DIR/"
And something similar in catalina.sh, but with $SERVER_MEM_OPTS or the like.
Though most useful for memory options, you can also include other things in there, such as: