Assuming that xyz.com has it’s nameservers pointed elsewhere (i.e. NOT to ns1.dreamhost.com ns2.dreamhost.com ns3.dreamhost.com) then you would go ahead and add blog.xyz.com as fully hosted via the dreamhost panel.
Use the instructions in the links above to create a dreamhosters.com mirror of the site, so that you can see it and work on it etc.
When you are ready to go live, you would go to “Manage domains” in the panel, find blog.xyz.com and click the DNS link right underneath. After the page reloads, scroll down and look for “Non-editable DreamHost DNS records for blog.xyz.com” The first record there should be an A record, with an IP address. Copy that IP address. Next go log in whereever the domains DNS is managed and make an entry that points blog.xyz.com to the IP address at dreamhost.
Remember that since dreamhost is not managing the DNS that you will need to manually update the IP address should it ever change. (which would be rare, but could happen)
As an after thought, I’ll also add that by giving us the real domain name, instead of an example, you get a better custom baked answer to your question. I had to make an assumption above, if it turns out dreamhost IS managing the DNS for the domain the answer is different. If I had know the real domain name I could have look that up, and looked at how it’s currently configured before I started typing.