The following code suggests that Mathematica stores the messages in cache:
(*1*)Remove[VariationalD]
(*2*)Messages[VariationalD]
(*3*)Message[VariationalD::args, OPS]
(*4*)Messages[VariationalD]
The output of the second line is {} as expected for a symbol that has just been removed. The output of the third line however is not the expected "-- Message text not found --". Instead, Mathematica seems to have pulled that message from some cache.
In any case, how can I reset the message cache (without resetting the whole installation)?
Update
I apologize because my previous example did not really work. In any case, the following is a better example. This code was executed on a freshly launched kernel.
before = Messages[General]; Message[General::dummies, OPS];
after = Messages[General]; Complement[after, before]

The message General::dummies was not part of the original list of messages attached to General. Following the documentation, the next place to check would be $NewMessage, but Messages[$NewMessage] is empty. So, where did General::dummies come from?
Messages[VariationalID] =.... BTW I can't reproduce the problem you mention. – Szabolcs Nov 15 '13 at 22:10Messages[VariationalID] =.did not work. The message might need to be loaded into the cache by loading the package. Once in the cache, it seems to stay there. – Hector Nov 15 '13 at 22:20