i've never properly understood the purposes behind these 2 differences. I've read the document, and tested it. What I got, is when I added the '@' symbol, a menu appeared asking me which one I was referring too (I had 2 different objects with the same alias in the same room).
I made a small test game with it, using the '@' symbol, and then not using the '@' symbol. Sometimes it put the object in my inventory, sometimes it didn't, without '@' altogether, it just puts the object in my inventory without asking which one.
Here is my code for the room:
define room <room>
command <pickup #food#> {
if ( #food# = beans ) then give <#food#>
msg <You picked up some #food#>
}
define object <fooditem001>
alias <beans>
take
end define
define object <fooditem002>
alias <beans>
take
end define
end define