Well, braces create hashes and blocks. Square brackets create arrays. Since square brackets aren't really involved in blocks, I'm guessing what you are asking is what is the difference between a hash and array. There are quite a lot, but I'm guessing what you're interested in is that arrays can associate an object with an ID integer, whereas a hash can associate objects with any arbitrary objects, and there isn't any necessary order to it.
So, for instance, an array could be:
array = [5, "abc", 84]
and then array[0] would return 5, array[1] would return "abc", and array[2] would return 84.
Whereas a hash could be:
hash = { 1 => 5, "alpha" => "abc", :sym => 84 }
and then hash[1] would return 5, hash["alpha"] would return "abc", and hash[:sym] would return 84.
There are a number of reasons to use one or the other, if you want to know more.