I don't think there's any difference between them-they are indeed interchangeable. It's just a matter of taste what to prefer, i guess. If you use the verb in a sentence affirmatively, then make sure it is followed by a negative pronoun "no" as in: I have no enemies.
If you prefer a negative verb, then use a "neutraliser" after it: She doesn't have any enemies. But be careful about using double negation in English-it's out of place here. Though many Russian learners of English enjoy doing that as they may be up to 3 negations in a Russian sentence (largely depends on the length of a sentence)
Hope you will find this helpful.
There are a number of common nouns that normally combine with 'no', rather than 'not a' or 'not any'. Most of them are uncountable and include
no amount, no time, no idea, no doubt, no reason, no need, no evidence, no problem, no way, no point, no use.
Conversely, in your example:
a.I have no pens.
b.I don't have any pens.
A native speaker is far more likely to say (b) rather than (a).
(a) sounds stilted.