The religion aspect stems from individuals and organisations finding that a certain approach works really well in one case and thinking that blindly applying the same techniques will result in the same good outcome in all cases in the future. This is worsened by managers (+developers) wanting to make software creation/maintenance more predictable and less ad-hoc (I mean, just look at how the average civil engineer approaches large projects to see how chaotic/immature most software development processes are - this is the case for pretty much every professional occupation except software). There are obvious constraints that make software difficult, but it's this search for something better that gives these fashions, and it's IMO really only the shortsighted or foolish that wake up one day and decide to apply only one of the approaches across the board on all of the lines of all of their applications.
It's all about having a light touch - there's nothing wrong with structured programming, OO, patterns, functional programming, TDD, IoC, etc. because they're really only tools that come in handy sometimes. You don't need to worship the ideals at all times, just use them when they're convenient or beneficial.