Should I wait for DOMContentLoaded event if I place a script tag at the end of a body tag

Basically no. If script modifies element, it needs to exist.
If you put script after that element it exists.
If you put it Before, it does not exist and you may want to use DOMContentLoaded to wait for script to execute until it's sure it exists.

<div id="myid"></div>
<script>
    getElementById('myid'); // it will work, Element myid Is defined
<script>

But this

<script>
    getElementById('myid'); // it will fail, it's not yet defined, it will be
    // Using DomContentLoaded here would be requrired
<script>
<div id="myid"></div>