I would add - as a designer - "provisions" during the design/build phase are only as good as the knowledge of what you're provisioning for. If what you're provisioning for is well understood and basically already designed, provisions can be done rather effectively and cost effective. OTOH, when the system you're attempting to provision for is still under development, you end up with so many unknowns that the provisions become basically worthless. You end up spending a bunch of time and money designing provisions that don't work and would need to be torn out and re-done if the 'provisioned for' system is ever actually implemented.
Been there, done that...