Name/word generator using DTMC in Ruby
I don't like how you've mixed the concerns of calculating with output. I know that right now you only want to output to a file, but what if you decide later that you want to work with this data in some other program? Writing to the file system is expensive and slow. Why write to a file and then read it back in. 

I would modify this to be in two parts. One to generate the names from the dictionary and one that uses that class to output to a file. This leaves things open to writing the output to Standard IO, some other UI, or for another program to simply work with the data. The idea is that each class should do one thing and do it well. 

On this note, each of your comments indicates a missed opportunity to extract a well named method that does one and only one thing. 


#Parsing the commandline arguments and suchlike
syllable_separator = (/-d./ === ARGV[-1]) ? ARGV.pop[2..-1] : ''
name_count = (/\d+/ === ARGV[-1]) ? ARGV.pop.to_i : DEFAULT_NAME_COUNT
file = ARGV.join ' '



This is just begging to be a method called parse_cmd_args. It should return some object that represents those three values in some sensible and well named way. 

I apologize that I've left s critique without any code examples. Normally I would provide some, but it's been a while since I've written any Ruby. It's better in this case that I leave you to attempt a clean up yourself. 

Try to:


Write methods that do one and only one thing. 
Create useful abstractions by the way of classes, even if they're just simple data structures to hold information. 
Add some vertical whitespace around logic that's too trivial or too intertwined to be its own method.