The GC is not involved in either operation, since in this case, you are using a value type (System.Int32). This means that "a" is allocated on the stack, not on the heap, and is not tracked by the GC.
In general, the first case will most likely have a (very, very slight, but probably not even easily measurable) performance improvement, since it's doing fewer stack allocations.
If, however, you're doing things with reference types (ie: MyClass a = new MyClass();), things change. It is actually VERY difficult to know, just by the code, which will be faster. In many cases, the first option is actually faster because it prevents the objects from going into Gen 2 in the GC, even though it's technically more allocations.
However, I recommend against trying to optimize code at this level, unless you find a true, profiled (measured) performance issue. You will find that you have much better results if you try to optimize your algorithm rather than your code, especially at this level.
Reed Copsey, Jr. -
http://reedcopsey.com