I found out that, when I create fields programmatically with rather small internal names, the very first character of that internal name will get encoded.
For example: BN67 becomes %5Fx0042%5FN67 or _x0042_N67. The character B has been encoded. Why does SharePoint do this?
So far, longer field names have not produced similar behavior.