I found a work around on this if anyone is still trying to figure it out. With punch out having two screens - one on top of the other - the bezel does not load as it is only able to load to a single screen. After writing new lay files several times over several weeks trying to get it to work..... I have no clue what I'm doing, seriously. I finally determined that the only way I was going to get the bezel to work on punch out was to split the bezel on the horizontal and have the lay file add one bezel to each screen. You can see in the lay file that one bezel is named "Bezel" and the other "Bezel1" and that I have it set for two screens. Copy and past this code into your lay file found in your mame emulator folder under artwork, inside the folder called "punchout". Further you will need to accurately crop your bezel of choice and name each appropriately, then copy those to the same punchout artwork folder. I'd share my cropped bezel but they are custom for my arcade machine.
<mamelayout version="2">
<element name="bezel_top">
<image file="bezel.png" />
</element>
<element name="bezel_bottom">
<image file="bezel1.png" />
</element>
<view name="Bezel Artwork For Over-Under Screens">
<screen index="0">
<bounds left="2" top="0" right="14" bottom="4.5" />
</screen>
<bezel element="bezel_bottom">
<bounds left="0" top="0" right="16" bottom="4.5" />
</bezel>
<screen index="1">
<bounds left="2" top="4.5" right="14" bottom="9" />
</screen>
<bezel element="bezel_top">
<bounds left="0" top="4.5" right="16" bottom="9" />
</bezel>
</view>
</mamelayout>
I thought others could use this fix! Happy Gaming!