I know they don't run at the same speed, but once you have rendered the frame you can't render objects the next frame until you've finished computing physics their new positions.
Not necessarily, I'd say it depends on your game.
In my own project (shmup engine), all sprites are objects relatively independent from each other. It doesn't matter if I render a sprite a pixel left or right from the position it should have in the current frame.
Thus, I can have my simulation thread (computes the new coordinates of every object) run at the speed I want, the only thing that'll change is the precision of the simulation. The displaying thread also runs at its own speed and is completely independent, just displaying the sprites at their new coordinates at its own speed.
On that subject, my own question: if I have a small task to do once in a while (like deleting stuff I don't need, or moving something on the screen), is it really less efficient to launch a thread every X ms that does the job and then disappears than to have a permanent thread that sleeps for X ms after its job is done? Or is it roughly the same?