XChat and Notice Placement
Other than channel messages and private messages, IRC has a notice type of message. This is intended to be used as a reply, something that will not cause the other client to send any acknowledgement back. When XChat displays these messages, it shows them in a tab that it figures is appropriate.
Why replies from ChanServ may not appear in the current tab
When XChat decides where to print a notice, it does so in the following order.
This means that if you issue a /cs info #yourchannel from your channel, the reply may show up elsewhere if ChanServ isn't in your channel, but is in some other channel.
How to make notices show in a consistent location
The simplest method is always have notices in one location is to go to Settings -> Preferences -> Channel switcher, and check the Open an extra tab for server notices box. This will cause all server notices to go into one tab, and all user notices to go into another. In this case, ChanServ would be considered a user notice, and so will show up in the (notices) tab.
If you know who will notice you before hand, you can simply query the user before they notice you. This way, all notices from that user will show up in the query tab. In the case of ChanServ, this may allow an easier archive of commands you have done anyway.
If you want the notice to always go to the front tab (assuming you are looking at the network and you don't have a query open with the user), you can use Khisanth's Notice to Front Perl script.
For other locations, a separate script would be required. While not currently implemented, it would be possible with a script to treat all notices like private messages (open a new query window when received), or place them in a specific existing tab, such as the server tab. At this point, the choice is up to you (or whoever designs the script).