Is there a specific reason why some people put a semicolon after the curly closing function bracket?
void foo() { };
Not really, the semicolon there makes no difference. It's probably a matter of habit.
You can put as many semicolons if you want though in C++11:
void foo() { };;;;;;;;