Architecture: Abstract vs. Manifest
No offense but... Architecture is only agnostic in the abstract. Architecture must be made manifest through language. In the particular discussion of C# and Java, both languages are so similar that manifesting architecture through them is basically equivalent. Try expressing the same architecture via Haskell or Scheme.
Declarative programming is NOT a silver bullet (to reuse or anything else). Whether the language is declarative or not (or functional or imperative or a hybrid or...), the language presents a worldview in which the programs expressed by that language may affect the world. In other words, declarative languages (such as Ant's XML-based buildfiles) (and their concomittant worldviews) are not, a priori, any more reusable than any other languages. There's always a balance to be struck between the implicit and the explicit facets.