At a conceptual level you can think of modular as building blocks. If you could take an existing app and cut it into an arbitrary number of blocks based around the functionality of each block, then that would be a modular design. Another way to think of it is just like regular mixins in Ruby. Instead of defining the same methods in many different places, you can define the methods in a module and then include the module in all the places you require the methods. You can think of modular the same way for Sinatra, but instead of methods you would use the modular pieces of an app to use in different instances of the same app or different apps. So its essentially building reusable components.
Take a look at this stackoverflow question for a nice example of using components for different instances of the same app.
In your example, it depends on what your goal is in creating the app. When using Sinatra::Base most options are disabled by default, you must configure the options you want to use. Also, in your example you need to require 'sinatra/base' instead of require 'sinatra'. Essentially Sinatra::Base is a "blank slate" and most options are disabled by default.