A repeated declaration will not harm your app.
It's always the latest DECLARE, which is active. If you don't have DECLARE running in a cycle -- regularly it's not a big time or memory expense.
Sometimes you even have to declare a function twice, and in two different ways.
For example, declaring the CopyMemory you might declare Destination parameter either as STRING @ or as INTEGER, depending on the destination object.