Bootstrap use div
s to show how the framework should be used. This is because div
s are general block element that can be used in almost every case for containers. But the element you are using with Bootstrap doesn't matter for styling, because Bootstrap uses classes to apply styles to the elements (except for tables which are partially stylised with tagnames).
For example, you will have the same result on screen when using:
<section class="col-md-4">Hello</section>
than when using:
<div class="col-md-4">Hello</div>
The real difference will be for robots and accessibility readers because, as you said, HTML5 elements are semantics.
Each developer will choose the element that he feels most comfortable with. But my point of view is: if you trust the semantical approach of HTML5 elements (and you should :) ), the best way would be to use HTML5 elements for tag that have a special meaning (like header
, footer
, nav
, …) and use div
for all cases in which no HTML5 element exist.
Here is a list of all elements with their meanings: HTML elements reference - HTML: HyperText Markup Language | MDN.