"Writing Efficient Ruby Code" by Dr. Stefan Kaes has this to say about parallel assignment (your first example):
Like any other Ruby expression, a value needs to be returned from a
parallel assignment. The value returned by a parallel assignment is
the value of the expression on the right-hand side of the assignment.
This means Ruby needs to create an array if the right-hand side is a
list of expressions:
>> a,b = 1,2
=> [1, 2]
Of course, if the assignment isn’t the last statement of a method, the
created array becomes garbage immediately. It’s therefore advisable to
avoid the use of parallel assignment in performance-critical code
Dr. Kaes goes on to speculate that Ruby 1.9 may change the semantics of parallel assignments to always return
true for performance reasons.
To my eye, parallel assignment aids neither clarity nor maintainability, so, performance reasons aside, I would avoid it as a matter of course.