It has been quite a while since I added the context support, so I don’t remember my thoughts on it exactly at the time. I know the decision was partly based on wanting to make the logic more seamless from no context usage to context usage. I was also trying to avoid adding some sort of assumed context or context keyword/s which could get in the way of how people want to use contexts. If we assumed that no context means “only changSets with no context specified”, then there would need to be a assumed context like “all” which people would need to know and use for all of them. It would also mean that all liquibase update calls that used to assume that they would run everything because there were no contexts would now not run some without changing the update call.
Thinking about it at this point, in response to your question, I think I agree with you that it would be more logical in most cases for no context to just mean changesets with no context, especially having a better idea of how they have been used over the years. It better optimizes for people who have used contexts before, not for people who are new to them (and who are only new for a very small time).
That being said, there have been times where people’s usage of contexts have worked well having no context mean all, although I do not remember the cases off hand.
At this point, however, it is too late to change. At least until 3.0…