Если точка с запятой необязательна, она не меняет функциональность, в противном случае, если вы пропустите ее, вы получите синтаксическую ошибку.
namespace A {
class B; // forward declaration, semicolon is mandatory.
class B {
}; // class definition, semicolon is mandatory
class C {
} f(); // because otherwise it is a return type of a function.
} // no need for semicolon
namespace D = A; // semicolon is mandatory.
Если это не те случаи, о которых вы говорили, прокомментируйте, пожалуйста.