There are 2 seperate tables in db:
a) Saving message's details (and its subject)
b) Saving thread's details (and its subject which is also the subject of the first message)
When you create a new thread, both tables are populated and subject fields filled according to your subject. However when user edits his post, vb doesnt check if it's the thread's first message or not and only modify post table details.. That's why..
If you are an admin you can change thread name, but users cant (without a hack)