I feel like that's a bit of a pre-mature optimization question. I don't think you'll find any performance gains by using any of the methods available, over another.
This really comes down to readability and what makes the most sense when glancing at the code.
Personally, I don't like any of the methods that people use 99% of the time (with, compact, etc.)
Laravel's View::make() method accepts a second parameter to pass variables through.
I find this is a lot more readable than any of the other solutions:
public function index($id)
{
$data['category'] = Category::find($id);
$data['topics'] = $category->getTopicPaginator();
$data['message'] = Message::find(1);
return View::make('category.index', $data);
}