Simple answer, no. Not every script.
If it's an existing script that you're modifying, you'll have to determine how that script works and see if there will ever be a case when either your additions will use the header function after the existing script has printed/echoed something, or if your addition will print/echo something before the existing script uses the header function.
If the answer is yes to either situation, using ob_start() is a fix. Just like putting a plug in a flat tire is a fix. It works, it will work until you can get a new tire, but it's not as good as having the new tire. There's also the chance that it's a tear in the tire that could be mended back together using industrial adhesive, which again is a fix, but still not as good as a new tire.
If it's a new script you're writing, then it's a matter of preference. Some people like to mix PHP and HTML like the following here.
<div><?php echo $something; ?></div>
It's not "wrong" per-say, but that style of coding sometimes forces you to use output buffering (what's actually provided by ob_start) if there is any chance of needing to send any HTTP Headers (not just "Location:") with the header() function later in the application.
So if you're using that style of mixed PHP/HTML, then yes. You should probably use ob_start() at the beginning of "every script that uses header('Location..." like you asked. I stress probably though, because it could be argued that you should be able to determine whether any headers will be sent before outputting anything. In which case you wouldn't need to use the buffer.
If you're not the type to use the mixed PHP/HTML style, and your code generally looks more like the following
$template = new template('./html401.html');
$template->load_file_into('./cache/popular.html', '<div id="popular"/>');
Then chances are you're not going to need output buffering much, if at all. The application will generally have its' own output buffering logic built in, and have no need for the PHP output buffer.
There are exceptions, occasionally you'll come across strange functions or code bases you're forced to work with that echo/print from within a function instead of returning the value. Sometimes you have to wrap that section up using the output buffering functions, but it's not going to require you to use ob_start at the beginning of every script.