I believe this is more or less a duplicate of this question that you asked yourself, only worded a bit more precise. My answer from there still applies to this answer.
Basically, there is no reason to go through all the AJAX hoops to use drupal_set_message, it will only slow things down. Using drupal_set_meesage will not get the messagefx module to react upon the html you insert, because it was generated from drupal_set_message. It will be a lot faster and simpler to generate and input the html directly in your javascript without any ajax calls, and then add the fx by calling relevant js function.
Edit:
What you are asking is impossible, you can't get drupal to show the messages from drupal_set_message() with effects on the fly for two reasons:
- Drupal is written en PHP so the only way to get new content to the page using PHP is reloading the page or loading a new one.
- Messagefx functions by running a simple js that targets the messages that has been created when the page loads, so even if it was possible to get drupal to update the page, printing new messages, they wouldn't get the effects from messagefx.
You could accomplish your goal like I have explained, I would probably alter it slightly to fit and optimize to what you have written here. However, you can't get new messages to the screen without doing something like jQuery's append(), prepend() functions. So I'm afraid you have to decide to do like I have described or similar, or not do it at all.
Also one thing you have to considder is, that whether you make/input the html through your js or through drupal, wont really matter regarding the end result: a page written in html.