Reflective binary ordering
JavaScript (ES6), 129 114 bytes

f=n=&gt;[...Array(p=1&lt;&lt;n)].map((_,i)=&gt;(p+i).toString(2).slice(1)).sort((a,b)=&gt;g(a)-g(b),g=a=&gt;[...a].reverse().join``&lt;a)


I appear to have stumbled on the code that happens to generate the given example for 4 bits. Edit: Saved 15 bytes thanks to @ConorO'Brien.