Don't assume "a little fiddling" with parameters, operators, fitness functions, etc., is harmless. One of the awkward realities of many widely applicable tools is that they typically have numerous tunable parameters. Evolutionary algorithms such as GP are no exception. Often changing a parameter or two can have a fairly minimal impact, and averaging over many runs is required to reliably detect those effects. Some parameter changes, however, can produce more dramatic effects. Changing the function set, for example, can significantly change the distribution of the sizes and shapes of trees, especially in the early generations, and potentially bias the system in unexpected ways.
Another source of change can be the problem domain. A common mistake is to hope that parameter settings that worked well for one problem will also work well for what appears to be a very similar problem. Problems that appear similar to humans, however, may have quite different search characteristics.
In addition, there are many small differences in GP implementations that are rarely considered important or even reported. However, our experience is that they may produce significant changes in the behaviour of a GP system. Differences as small as an >' in place of a ³' in an if statement can have an important effect. For example, the substitution >' « ³' may influence the winners of tournaments, the designation of the best-of-run individual, the choice of which elements are cloned when elitism is used, or the offspring produced by operators which accept the offspring only if it is better or not worse than a parent.