The principal consequence is Ruby programmers aren't particularly accustomed to doing it this way. Either one of your alternatives would be more easily readable by members of the community, other members of your team, future maintainers, etc.
The secondary consequence is creating one-off lambda functions in this way will be slower than calling static functions. Creating lambdas aren't extraordinarily slow by any means, but it's still slower than not using them. If you did this a lot, it would start to add up. To give some context, creating an empty lambda takes about 10 times longer to create than an empty array. So if you were doing this repeatedly (e.g. inside a function call that gets used over and over), that difference could add up.
Lastly, there is at least one other way to do it. I'm sure some others exist, too...
a, b = [:f1, :f2].collect { |fn| send(fn, some_function(some_data)) }
All in all, though, I think your first alternative is the cleanest approach:
data = some_function(some_data))
a, b = f1(data), f2(data)
It's entirely clear what you're doing and is also efficient.