I'm familiar with extending fabrics by adding more switches to it, but i don't get why sometimes it's better to do routing between fabrics (considering all the switches are from the same vendor, using exactly the same FC protocol, etc).
For example, i have a fabric with storage arrays from vendor A. The new storage from vendor B has been configured and instead of extending the current fabrics, it was chosen to route between the old and the new ones.
Is there a best practice about the maximum size of a fabric ? When is it best to use SAN routing instead of extending current fabrics ?
There are several reasons to deploy a routed approach to Fibre Channel:
In each of these a router would help merge two fabrics that otherwise would require a lot of effort to merge, or reduce administrative complexity due to scale.
In many ways, you use an FC router when the pain of not using one exceeds the pain of using one.
As for your question about best-practice, I don't believe there is much industry-wide accepted practices here. The closest we come is when you have to merge two fabrics based on different vendor's solutions (such as the Brocade-FC/Cisco-FCIP I used above), though that's an 'excess of paranoia' thing rather than a demonstrable fact.
You add a router when not having one would be more painful. If you have two large datacenters, spend four years building them out independently, and then finally get some fiber connectivity between them. The two FC fabrics in the may be very complex critters. Combining both into a single fabric would require renaming hundreds/thousands of aliases and zones, the chances of a typo somewhere disrupting connectivity is not small. In that case, using a router to get the fabrics connected would be faster and cause less potential disruption than attempting to merge the fabrics.