In the AI field people generally know what you mean by the term "Programming by Demonstration." When you pin them down on the definition it seems to settle on: A computer learning a macro from what you are doing repetitively in a text editor.
But at a higher-level, more general level, what is it? All a computer can do is execute a program, so any machine learning is "programming" a computer. And all learning is learning from demonstrations of things. So from at least a linguistic standpoint, the phrase Programming by Demonstration seems pretty meaningless. Judging from the body of work that calls itself PBD though I would say that it has the following qualities:
1) "It" learns from a very small number of examples (like maybe 1).
2) "It" learns a procedural language from the examples.
3) "It" operates in a discrete environment without non-determinism.
Discuss amongst yourselves...