This is to be expected. Your bounding box is used to determine the center and best integer zoom level that will fit your data. The map will rarely if ever be tight on your bounding box, and especially since the aspect ratio of your bounding box and requested image size would also need to be perfect for that to happen. Note that if fractional zoom levels were used you would end up with an image that isn't as clear because it would have to be scaled.
Here are a couple of older articles that give insights into what is happening under the hood:
https://rbrundritt.wordpress.com/2009/07/21/determining-best-map-view-for-an-array-of-locations/
https://rbrundritt.wordpress.com/2008/10/25/ve-imagery-service-and-custom-icons/