Я не уверен, что эти обратные слеши должны остаться результатом или нет, но вот тот, без этого, и да, я не использую здесь отрицательный взгляд.
.scan(/(\w+)\(((?:\([^)]+\)|[^()]+)+)\)/)
=> [
["title", "Hello+World"],
["title", "(Hello+World)"],
["title", "(Hello+World)"],
["title", "Well+Hello+World+!"],
["title", "Well+(Hello+World)+!"],
["title", "Well+(Hello+World)+!"]
]