Obviously, the query updating the user profile overwrites (resets) the custom user title.
All you have to do is to remove the user_title = 'xyz' part from the UPDATE user query in the script /forums/profile.php (look for a == 'editprofile').
I am aware that the issue could be sidestepped by editing the hard-coded database query contained in the base forum script. However, forum modifications should be able to do their job without requiring manual edits to the base scripts. When I said that I was searching for the cause of the bug, I was referring to the CFD Shop addon, which should include some type of override which prevents the titles from being overwritten (but apparently does not).
It's a very bad idea to begin manually editing the base forum scripts. vBulletin (and especially version 4.x) is very developer-friendly and offers a robust hook/plugin system for third-party developers to extend the standard forum functionality. A well-coded forum addon/hack should never require modifications to the base forum scripts, but should rather make use of the hook/plugin system to perform its functions.
The problem with manually editing the base forum scripts is that all such edits will get destroyed each time the base forum software (vBulletin) is updated, and will need to be redone. And since the latest versions of the forum scripts can sometimes change structure, variables and such, it can render the desired edits impossible or very difficult to re-implement. This is what happened with the
Dev Posts feature: the vBulletin internal search was completely recoded for version 4.x, and the old manual edit that I used in the past to create the
MindArk Posts functionality was made completely obsolete.
For a heavily customized forum like PCF (which uses upwards of two dozen third-party forum addons and modifications), manually editing the base forum scripts results in the upgrade process quickly becoming a total nightmare (or rather, even more of a nightmare than it already is ever since 4.x.x came along...
).
Back on topic: Of course in this case, it seems the 3rd-party addon that is used for the CFD Shop has a bug which is allowing the purchased custom titles to be overwritten inadvertently. As such, purchasing custom titles in the CFD Shop has been suspended while I investigate a proper solution to this issue.