Your concern is valid, but the RewriteRule you've set up should not interfere with Laravel's internal routing. Laravel's routing is handled by the application itself, not by the .htaccess file in the public directory.
The .htaccess file is used by Apache to handle incoming requests before they reach Laravel. In your case, it's redirecting requests for foobar.com/public/* to foobarold.com/public/*, which is exactly what you want.
As long as you don't have a route in your Laravel application that starts with public/, there should be no conflict. Laravel's routes are relative to the public directory, so a route like Route::get('/public/something', ...) would correspond to a URL like foobar.com/public/something.
If you're still concerned, you could add a condition to your RewriteRule to exclude any requests for actual files or directories in the public directory. Here's how you could do that:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^public/(.*)$ https://foobarold.com/public/ [QSA,R,L]
This will only redirect requests that don't correspond to an existing file or directory. This way, if you ever do add a file or directory in your public directory that starts with public/, it won't be redirected.