Я не могу сказать, делает ли диспетчер что-либо дороже при отправке из потока пользовательского интерфейса в себя, по сравнению с проверкой. Но BeginInvoke из потока пользовательского интерфейса может вести себя не так, как выполнение операции напрямую, поскольку он, по крайней мере, помещается в очередь, а не вызывается немедленно. Вы могли бы заметить разницу между этим и удалением условного оператора, если бы у вас был код сразу после этого.
Конечно, стоит знать о потоке управления, достаточно знать, если разница не имеет значения.