I don't know if "less restrictive" is the right term. It does give you the convenience of automatic function prototype generation --- that feature usually works correctly.
However, it smashes all the .ino files into a single translation unit before handing it off to the compiler. It may be important to know this and the order in which it happens (based on file name after the main .ino).
So, while adequate for newbies, the above does not provide truly modular code that is maintainable and reusable. It is also not suitable for large projects. Also, I prefer to supply my own function prototypes and thus prefer the .h / .cpp file method …. see my Reply #5 Here.