Can the bot make an utterance and then immediately start a form?

Yes, you can do this by using custom action and returning a followup form in actions.

Story:

    * request_restaurant
    - action_greet

actions.py:

from rasa_sdk.events import (
SlotSet,
UserUtteranceReverted,
ConversationPaused,
EventType,
AllSlotsReset,
FollowupAction,
)

class ActionGreet(Action):
def name(self):
    return "action_greet"

def run(self, dispatcher, tracker, domain):
    
    dispatcher.utter_message(template="utter_greet")
    
    return [FollowupAction("restaurant_form")]