I started with a 20' pipe for my culvert, with a 12' driveway, and used that all through construction of our home. Later when we were finishing up the driveway, I added an additional 5.5' to each end (scraps from a narrower culvert I made) to make it 31' total, and that gave me more room to have the proper radius as the driveway flares wider to meet the street.
I think my ditch centerline is about 8' from the street, so the flare radius passes over the culvert pipe and the driveway is more like 24-25' wide right in that spot (it's about 36' wide right at the street). Now I have about 3' of shoulder on each side of the gravel driveway where it crosses over the pipe, and that's enough to put down some rip-rap stone to keep things stable. If you have a deeper crossing, you'll want a wider shoulder yet. I think my ditch was only about 2-3' deep. If I needed 31' of pipe for a 2-3' ditch, I can easily see 40' for a deeper ditch.
Don't know about your location, but here I had to follow Virginia DOT specs for the culvert, including bedding, depth, fill type, drive width, and radius/flare at the street. They pretty much set the specs and it's not up to me to decide. In this case, the street is still in the process of being turned over from the private developer to the county/VDOT, so everything has to pass inspection (the developer has failed twice, for stuff as simple as tire ruts on the shoulder from someone who did a U-turn).